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 1y0dgv8b4fogc dodana przez Jerem96, 24.04.2012 21:12
Typ:



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.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <nvault>
#include <codmod>
#include <colorchat>
 
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0-3"
#define AUTHOR "QTM_Peyote"
 
#define MAX_WIELKOSC_NAZWY 3200
#define MAX_WIELKOSC_OPISU 2560
#define MAX_ILOSC_PERKOW 1200
#define MAX_ILOSC_KLAS 1000
 
#define STANDARDOWA_SZYBKOSC 250.0
 
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_POKAZ_GODZINE 672
#define ZADANIE_USTAW_SZYBKOSC 832
#define ZADANIE_REGENERACJA 666
 
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 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[2][33],
wartosc_perku_gracza[2][33],
hud[33][3];
 
new Float:maksymalne_zdrowie_gracza[33],
Float:szybkosc_gracza[33],
Float:redukcja_obrazen_gracza[33];
 
enum statystyki { zdrowie = 0, inteligencja, wytrzymalosc, kondycja, grawitacja, regeneracja, niewidzialnosc, przeladowanie }
 
new const limit_statystyk[statystyki] = {
	50, // zdrowie 
	55, // inteligencja 
	20, // wytrzymalosc
	50, // kondycja
	25, // grawitacja
	25, // regeneracja
	40, // niewidzialnosc
	30  // przeladowanie
}
 
new punkty_gracza[33],
statystyki_gracza[33][statystyki];
 
new bool:gracz_ma_tarcze[33],
bool:gracz_ma_noktowizor[33];     
 
new bonusowe_bronie_gracza[33],
bonusowe_statystyki_gracza[33][statystyki];
 
new bronie_klasy[MAX_ILOSC_KLAS+1], 
statystyki_klas[MAX_ILOSC_KLAS+1][statystyki],
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 Float:round_start = -1.0;
new Float:round_time;
new mp_roundtime;
 
#define MAX_WIELKOSC_FRAKCJA 64
new frakcja_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_FRAKCJA+1]
 
const NOCLIP_WPN_BS = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
const SHOTGUNS_BS = ((1<<CSW_M3)|(1<<CSW_XM1014))
 
// weapons offsets
const m_pPlayer = 41
const m_iId = 43
const m_flTimeWeaponIdle = 48
const m_fInReload = 54
 
const m_flNextAttack = 83
 
stock const Float:reloadtime[CSW_P90+1] = {
	0.00, 2.70, 0.00, 2.00, 0.00, 0.55,   0.00, 3.15, 3.30, 0.00, 4.50, 
	2.70, 3.50, 3.35, 2.45, 3.30,   2.70, 2.20, 2.50, 2.63, 4.70, 
	0.55, 3.05, 2.12, 3.50, 0.00,   2.20, 3.00, 2.45, 0.00, 3.40
}
native cod_get_user_coins(id)
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_clcmd("say /perk2", "KomendaOpisPerku2");
	register_clcmd("say /drop2", "WyrzucPerk2");
	register_clcmd("say /wyrzuc2", "WyrzucPerk2");
	register_clcmd("say /p2", "KomendaOpisPerku2");
	register_clcmd("say /p", "KomendaOpisPerku");
	register_clcmd("useperk2", "UzyjPerku2");
	register_clcmd("radio2", "UzyjPerku2");
	register_clcmd("say /d", "WyrzucPerk");
	register_clcmd("say /d2", "WyrzucPerk2");
	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 /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("say /hud", "WybierzKolorHud");
 
	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_message(get_user_msgid("Health"),"MessageHealth");
 
	register_logevent("PoczatekRundy", 2, "1=Round_Start"); 
	register_logevent("KoniecRundy", 2, "1=Round_End");
	register_event("TextMsg", "RestartRundy", "a", "2&#Game_C", "2&#Game_w");
 
	mp_roundtime = get_cvar_pointer("mp_roundtime");	
 
	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");
 
	vault = nvault_open("CodMod");
 
	MsgScreenfade = get_user_msgid("ScreenFade");
 
	SyncHudObj = CreateHudSyncObj();
	SyncHudObj2 = CreateHudSyncObj();
 
	perk_zmieniony = CreateMultiForward("cod_perk_changed", ET_CONTINUE, FP_CELL, 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");
 
	new weapon[17]
	for(new i=1; i<=CSW_P90; i++)
	{
		if( !(NOCLIP_WPN_BS & (1<<i)) && get_weaponname(i, weapon, charsmax(weapon)) )
		{
			if( !(SHOTGUNS_BS & (1<<i)) )
			{
				RegisterHam(Ham_Weapon_Reload, weapon, "PrzeladowanieBroniPost", 1)
			}
		}
	}
 
	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_get_user_perk_value", "PobierzWartoscPerku", 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");
	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(!task_exists(id+ZADANIE_POKAZ_GODZINE))	
	set_task(0.1, "PokazGodzine", id+ZADANIE_POKAZ_GODZINE, _, _, "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 PrzeladowanieBroniPost(ent)
{    
	if(get_pdata_int(ent, m_fInReload, 4))
	{
		new id = get_pdata_cbase(ent, m_pPlayer, 4)
		new Float:speed;
		new Float:delay;
		speed = 1.0-float(PobierzPrzeladowanie(id, 1, 1, 1))/40;
		delay = reloadtime[get_pdata_int(ent, m_iId, 4)];
		delay *= speed;
		set_pdata_float(id, m_flNextAttack, delay, 5);
		set_pdata_float(ent, m_flTimeWeaponIdle, delay + 0.5, 4);
	}
}
 
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[0][id], wartosc_perku_gracza[0][id], 0, 0);
	UstawPerk(id, perk_gracza[1][id], wartosc_perku_gracza[1][id], 0, 1);
 
	WczytajDane(id, klasa_gracza[id], 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]);
	set_pev(id, pev_gravity, (1.0-floatmin(float(PobierzGrawitacje(id, 1, 1, 1))/50.0, 0.5)));
	set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255-floatround(float(PobierzNiewidzialnosc(id, 1, 1, 1))*2.5, floatround_ceil));
}
 
public Regeneracja(id)
{
	id -= ZADANIE_REGENERACJA;
 
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;
 
	if(is_user_alive(id))
	{
		new Float:cur_health = float(get_user_health(id));
		new Float:max_health = float(PobierzZdrowie(id, 1, 1, 1)+100);
		new Float:new_health;
 
		new_health = floatmin(float(floatround(float(PobierzRegeneracje(id, 1, 1, 1))/1.25+cur_health, floatround_ceil)), max_health)
 
		set_pev(id, pev_health, new_health)
 
		if(float(get_user_health(id)) < max_health && !task_exists(id))
			set_task(5.0, "Regeneracja", id+ZADANIE_REGENERACJA)
 
	}
	return PLUGIN_CONTINUE;
}
 
public PoczatekRundy()	
{
	freezetime = false;
 
	round_start = get_gametime();
	round_time = get_pcvar_float(mp_roundtime) * 60.0;
 
	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 KoniecRundy()
{
	round_start = -1.0;
}
 
public RestartRundy()
{
	round_start = -1.0;
}
 
Float:get_roundtime_left()
{
	return (round_start == -1.0) ? 0.0 : ((round_start + round_time) - get_gametime());
}
 
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(this, idinflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_connected(attacker) || !klasa_gracza[attacker])
		return HAM_IGNORED;
 
	if(get_user_team(this) != 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;
		}
	}
 
	if(!task_exists(this+ZADANIE_REGENERACJA))
		set_task(5.0, "Regeneracja", this+ZADANIE_REGENERACJA);
 
	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[0][attacker])
			UstawPerk(attacker, -1, -1, 1, 0);
		else if(!perk_gracza[1][attacker])
			UstawPerk(attacker, -1, -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);
}
 
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;
	statystyki_gracza[id][zdrowie] = 0;
	statystyki_gracza[id][inteligencja] = 0;
	statystyki_gracza[id][wytrzymalosc] = 0;
	statystyki_gracza[id][kondycja] = 0;
	statystyki_gracza[id][grawitacja] = 0;
	statystyki_gracza[id][regeneracja] = 0;
	statystyki_gracza[id][niewidzialnosc] = 0;
	statystyki_gracza[id][przeladowanie] = 0;
	bonusowe_statystyki_gracza[id][zdrowie] = 0;
	bonusowe_statystyki_gracza[id][inteligencja] = 0;
	bonusowe_statystyki_gracza[id][wytrzymalosc] = 0;
	bonusowe_statystyki_gracza[id][kondycja] = 0;
	bonusowe_statystyki_gracza[id][grawitacja] = 0;
	bonusowe_statystyki_gracza[id][regeneracja] = 0;
	bonusowe_statystyki_gracza[id][niewidzialnosc] = 0;
	bonusowe_statystyki_gracza[id][przeladowanie] = 0;
	hud[id][0] = 0;
	hud[id][1] = 255;
	hud[id][2] = 0;
	maksymalne_zdrowie_gracza[id] = 0.0;
	szybkosc_gracza[id] = 0.0;
	UstawPerk(id, 0, 0, 0, 0);
	UstawPerk(id, 0, 0, 0, 1);
}
 
public UsunZadania(id)
{
	remove_task(id+ZADANIE_POKAZ_INFORMACJE);
	remove_task(id+ZADANIE_POKAZ_GODZINE);	
	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, BLUE,  "POMOCNIK: ^x04 Dostales %i doswiadczenia za wygrana runde.", doswiadczenie_za_wygrana);
		SprawdzPoziom(id);
	}
}
 
public KomendaOpisPerku(id)
	OpisPerku(id, perk_gracza[0][id], wartosc_perku_gracza[0][id]);
 
public KomendaOpisPerku2(id)
	OpisPerku(id, perk_gracza[1][id], wartosc_perku_gracza[1][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);
	//ColorChat(id, GREEN, "^x01Perk: %s .", nazwy_perkow[perk]);
	//ColorChat(id, GREEN, "^x01Opis: %s .", opis_perku);
	//set_hudmessage(255, 0, 0, 0.52, 0.29, 0, 6.0, 10.0, 10, 0, 0, 3)
	set_hudmessage(255, 255, 0, 0.52, 0.29, 0, 15.0, 15.0, 0.1, 0.1, 3);
	show_hudmessage(id, "Perk: %s^nOpis: %s", nazwy_perkow[perk], opis_perku);
	//set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
}
 
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("Klasy:", "OpisKlasy_Frakcje");
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(!equal(frakcja_klas[i],"") && !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);
	client_cmd(id, "spk QTM_CodMod/select");
}
 
public OpisKlasy_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:", "OpisKlasy_Handle");
 
	new temp[5];
	for(new i=1; i <= ilosc_klas; i++)
	{
		if(equali(data,frakcja_klas[i]))
		{
			num_to_str(i, temp, charsmax(temp));
			menu_additem(menu2, nazwy_klas[i], temp);
		}
	}
	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 OpisKlasy_Handle(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) 
 
	item = str_to_num(data);	
 
	new opis[416+MAX_WIELKOSC_OPISU];
	format(opis, charsmax(opis), "yKlasa: w%s^nyInteligencja: w%i^nyZdrowie: w%i^nyWytrzymalosc: w%i^nyKondycja: w%i^nyBronie:w%s^nyDodatkowy opis: w%s", nazwy_klas[item], statystyki_klas[item][inteligencja], statystyki_klas[item][zdrowie], statystyki_klas[item][wytrzymalosc], statystyki_klas[item][kondycja], OpisKlasy_Bronie(item), opisy_klas[item]);
 
	return PLUGIN_CONTINUE;
}
 
public OpisKlasy_Bronie(item)
{
	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++;
		}
	}
	return bronie;
}
 
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(!equal(frakcja_klas[i],"") && !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 statystyka[80];
	new tytul[25];
	formatex(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]);
	new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
 
	formatex(statystyka, charsmax(statystyka), "Zdrowie: r%i y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Inteligencja: r%i y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Wytrzymalosc: r%i y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Kondycja: r%i y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Grawitacja: r%i y(Zmniejsza grawitacje)", PobierzGrawitacje(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Regeneracja: r%i y(Zwieksza ilosc regenerowanego zdrowia)", PobierzRegeneracje(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Niewidzialnosc: r%i y(Zmniejsza widzialnosc)", PobierzNiewidzialnosc(id, 1, 1, 1));
	menu_additem(menu, statystyka);
	formatex(statystyka, charsmax(statystyka), "Przeladowanie: r%i y(Zmniejsza szybkosz przeladowania)", PobierzPrzeladowanie(id, 1, 1, 1));
	menu_additem(menu, statystyka);
 
	menu_setprop(menu, MPROP_PERPAGE, 0);
	/*menu_setprop(menu, MPROP_EXIT, 0);
	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 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 nazwy_statystyk[statystyki][] = { "zdrowia", "inteligencji", "wytrzymalosci", "kondycji", "grawitacji", "regeneracji", "niewidzialnosci", "przeladowania" }
 
	switch(item)
	{
		case 0..7:
		{
			if(statystyki_gracza[id][statystyki:item] < limit_statystyk[statystyki:item])
			{
				statystyki_gracza[id][statystyki:item]++;
				punkty_gracza[id]--;
			}
			else 
				ColorChat(id, BLUE,  "POMOCNIK: ^x04 Maxymalny poziom %s osiagniety", nazwy_statystyk[statystyki:item]);
		}
		default: 
		{
			menu_destroy(menu);
			return PLUGIN_CONTINUE;
		}
	}
 
	if(punkty_gracza[id] > 0)
		PrzydzielPunkty(id);
 
	return PLUGIN_CONTINUE;
}
 
public KomendaResetujPunkty(id)
{	
	ColorChat(id, BLUE,  "POMOCNIK: ^x04 Umiejetnosci zostana zresetowane.");
	client_cmd(id, "spk QTM_CodMod/select");
 
	ResetujPunkty(id);
}
 
public ResetujPunkty(id)
{
	punkty_gracza[id] = (poziom_gracza[id]-1)*3;
 
	statystyki_gracza[id][zdrowie] = 0;
	statystyki_gracza[id][inteligencja] = 0;
	statystyki_gracza[id][wytrzymalosc] = 0;
	statystyki_gracza[id][kondycja] = 0;
	statystyki_gracza[id][grawitacja] = 0;
	statystyki_gracza[id][regeneracja] = 0;
	statystyki_gracza[id][niewidzialnosc] = 0;
	statystyki_gracza[id][przeladowanie] = 0;
	bonusowe_statystyki_gracza[id][zdrowie] = 0;
	bonusowe_statystyki_gracza[id][inteligencja] = 0;
	bonusowe_statystyki_gracza[id][wytrzymalosc] = 0;
	bonusowe_statystyki_gracza[id][kondycja] = 0;
	bonusowe_statystyki_gracza[id][grawitacja] = 0;
	bonusowe_statystyki_gracza[id][regeneracja] = 0;
	bonusowe_statystyki_gracza[id][niewidzialnosc] = 0;
	bonusowe_statystyki_gracza[id][przeladowanie] = 0;
 
	if(punkty_gracza[id])
		PrzydzielPunkty(id);
}
 
public WybierzKolorHud(id)
{
	new menuwybierz = menu_create("Wybierz kolor HUD", "WybierzKolorHud_Handler")
	menu_additem(menuwybierz, "yZielony")
	menu_additem(menuwybierz, "yBialy")
	menu_additem(menuwybierz, "yZolty")
 
	menu_display(id, menuwybierz)
}
 
public WybierzKolorHud_Handler(id, menuwybierz, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menuwybierz);
		return PLUGIN_CONTINUE;
	}
 
	switch(item)
	{
		case 0:
		{
			hud[id][0] = 0;
			hud[id][1] = 255;
			hud[id][2] = 0;
		}
		case 1:
		{
			hud[id][0] = 255;
			hud[id][1] = 255;
			hud[id][2] = 255;
		}
		case 2:
		{
			hud[id][0] = 255;
			hud[id][1] = 255;
			hud[id][2] = 0;
		}
	}
	menu_destroy(menuwybierz);
	return PLUGIN_CONTINUE;
}
 
public UstawKolorHud(id)
{
	set_hudmessage(hud[id][0], hud[id][1], hud[id][2], -1.0, 0.92, 0, 0.0, 0.3, 0.0, 0.0);
}
 
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)
	return UzyjPerki(id, 0);
 
public UzyjPerku2(id)
	return UzyjPerki(id, 1);
 
public UzyjPerki(id, lp)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED;
 
	new forward_handle = forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[lp][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];
	formatex(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], statystyki_gracza[id][zdrowie], statystyki_gracza[id][inteligencja], statystyki_gracza[id][wytrzymalosc], statystyki_gracza[id][kondycja], statystyki_gracza[id][grawitacja], statystyki_gracza[id][regeneracja], statystyki_gracza[id][niewidzialnosc], statystyki_gracza[id][przeladowanie]);
 
	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, tylko_poziom)
{
	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[10][32];
 
	parse(vaultdata, danegracza[0], 31, danegracza[1], 31, danegracza[2], 31, danegracza[3], 31, danegracza[4], 31, danegracza[5], 31, danegracza[6], 31, danegracza[7], 31, danegracza[8], 31, danegracza[9], 31);
 
	if(tylko_poziom)
	{
		new temp_poziom_gracza = str_to_num(danegracza[1]) > 0 ? str_to_num(danegracza[1]) : 1;
		return temp_poziom_gracza;
	}
 
	doswiadczenie_gracza[id] = str_to_num(danegracza[0]);
	poziom_gracza[id] = str_to_num(danegracza[1])>0?str_to_num(danegracza[1]):1;
 
	statystyki_gracza[id][zdrowie] = 0;
	statystyki_gracza[id][inteligencja] = 0;
	statystyki_gracza[id][wytrzymalosc] = 0;
	statystyki_gracza[id][kondycja] = 0;
	statystyki_gracza[id][grawitacja] = 0;
	statystyki_gracza[id][regeneracja] = 0;
	statystyki_gracza[id][niewidzialnosc] = 0;
	statystyki_gracza[id][przeladowanie] = 0;
 
	statystyki_gracza[id][zdrowie] = str_to_num(danegracza[2]);
	statystyki_gracza[id][inteligencja] = str_to_num(danegracza[3]);
	statystyki_gracza[id][wytrzymalosc] = str_to_num(danegracza[4]);
	statystyki_gracza[id][kondycja] = str_to_num(danegracza[5]);
	statystyki_gracza[id][grawitacja] = str_to_num(danegracza[6]);
	statystyki_gracza[id][regeneracja] = str_to_num(danegracza[7]);
	statystyki_gracza[id][niewidzialnosc] = str_to_num(danegracza[8]);
	statystyki_gracza[id][przeladowanie] = str_to_num(danegracza[9]);
 
	punkty_gracza[id] = (poziom_gracza[id]-1)*3-statystyki_gracza[id][zdrowie]-statystyki_gracza[id][inteligencja]-statystyki_gracza[id][wytrzymalosc]-statystyki_gracza[id][kondycja]-statystyki_gracza[id][grawitacja]-statystyki_gracza[id][regeneracja]-statystyki_gracza[id][niewidzialnosc]-statystyki_gracza[id][przeladowanie];
 
	return PLUGIN_CONTINUE;
} 
 
public WyrzucPerk(id)
	DropPerka(id, 0)
 
public WyrzucPerk2(id)
	DropPerka(id, 1)
 
public DropPerka(id, lp)
{
	if(perk_gracza[lp][id])
	{
		ColorChat(id, BLUE,  "POMOCNIK: ^x04 Wyrzuciles %s.", nazwy_perkow[perk_gracza[lp][id]]);
		UstawPerk(id, 0, 0, 0, lp);
	}
	else
		ColorChat(id, BLUE,  "POMOCNIK: ^x04 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)*3-statystyki_gracza[id][zdrowie]-statystyki_gracza[id][inteligencja]-statystyki_gracza[id][wytrzymalosc]-statystyki_gracza[id][kondycja]-statystyki_gracza[id][grawitacja]-statystyki_gracza[id][regeneracja]-statystyki_gracza[id][niewidzialnosc]-statystyki_gracza[id][przeladowanie];
		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)*3-statystyki_gracza[id][zdrowie]-statystyki_gracza[id][inteligencja]-statystyki_gracza[id][wytrzymalosc]-statystyki_gracza[id][kondycja]-statystyki_gracza[id][grawitacja]-statystyki_gracza[id][regeneracja]-statystyki_gracza[id][niewidzialnosc]-statystyki_gracza[id][przeladowanie];
		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 PokazGodzine(id)
{
id -= ZADANIE_POKAZ_GODZINE;
 
if(!is_user_connected(id))
{
	remove_task(id+ZADANIE_POKAZ_GODZINE);
	return PLUGIN_CONTINUE;
}
 
if(!is_user_alive(id))
{
	new target = pev(id, pev_iuser2);
 
	if(!target)
		return PLUGIN_CONTINUE;
		new Time[9];
		set_hudmessage(255, 255, 255, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0);
		ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time);
		return PLUGIN_CONTINUE;
	}
	//set_hudmessage(255, 0, 0, -1.0, 0.88, 0, 6.0, 12.0)
	//show_hudmessage(id, "")
	new Time[9];
	get_time("%H:%M:%S",Time,8)
	//new hp = get_user_health(id);
	//set_hudmessage(255, 0, 0, 0.57, 0.80, 0, 6.0, 12.0)
	//show_hudmessage(id, "")
	set_hudmessage(255, 255, 255, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0);
	ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time);
	//set_hudmessage(0, 255, 0, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0);
	//ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time);
	return PLUGIN_CONTINUE;
}*/
 
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;
 
		new Float:proc_doswiadczenie_gracza = 0.0;
		proc_doswiadczenie_gracza = (float((doswiadczenie_gracza[target] - PobierzDoswiadczeniePoziomu(poziom_gracza[target]-1))) / float((PobierzDoswiadczeniePoziomu(poziom_gracza[target]) - PobierzDoswiadczeniePoziomu(poziom_gracza[target]-1)))) * 100.0;
 
		set_hudmessage(255, 255, 255, 0.55, 0.40, 0, 0.0, 0.3, 0.0, 0.0, 2);
		ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %0.1f%%^nPoziom : %i^nPrzedmioty : %s i %s^nZycie : %d^n", nazwy_klas[klasa_gracza[target]], proc_doswiadczenie_gracza, poziom_gracza[target], nazwy_perkow[perk_gracza[0][target]], nazwy_perkow[perk_gracza[1][target]], get_user_health(target));//
		return PLUGIN_CONTINUE;
	}
	//set_hudmessage(255, 0, 0, -1.0, 0.88, 0, 6.0, 12.0)
	//show_hudmessage(id, "")
	//new Time[9];
	//get_time("%H:%M:%S",Time,8)
 
	//set_hudmessage(255, 0, 0, 0.57, 0.80, 0, 6.0, 12.0)
	//show_hudmessage(id, "")
	//set_hudmessage(0, 255, 0, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0);
	//ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time);
	//set_hudmessage(0, 255, 0, 0.50, 0.90, 0, 0.0, 0.3, 0.0, 0.0);
 
	new Float:proc_doswiadczenie_gracza = 0.0;
	proc_doswiadczenie_gracza = (float((doswiadczenie_gracza[id] - PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))) / float((PobierzDoswiadczeniePoziomu(poziom_gracza[id]) - PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1)))) * 100.0;
	new round_seconds_left = floatround(get_roundtime_left(), floatround_floor)
	new round_time_left[8];
	formatex(round_time_left, sizeof(round_time_left), "%s%d:%s%d",  round_seconds_left / 60 > 10 ? "" : "0", round_seconds_left / 60, round_seconds_left % 60 > 10 ? "" : "0", round_seconds_left % 60);
 
	UstawKolorHud(id)
	ShowSyncHudMsg(id, SyncHudObj, "[Klasa : %s] | [Doswiadczenie : %0.1f%%] | [Poziom : %i]^n[Przedmioty : %s i %s]^n[Zycie : %d] | [Do konca rundy : %s] | [Monety : %d]", nazwy_klas[klasa_gracza[id]], proc_doswiadczenie_gracza, poziom_gracza[id], nazwy_perkow[perk_gracza[0][id]], nazwy_perkow[perk_gracza[1][id]], get_user_health(id), round_time_left, cod_get_user_coins(id));
 
	return PLUGIN_CONTINUE;
}
 
public Pomoc(id)
	show_menu(id, 1023, "y/resetw - resetuje statystyki^ny/statystykiw - wyswietla statystyki^ny/klasaw - uruchamia menu wyboru klas^ny/wyrzucw - wyrzuca perk^ny/perkw - pokazuje opis twojego perku^ny/klasyw - pokazuje opisy klas^ny+usew - Uzycie umiejetnosci klasy^nyradio3w (standardowo C) lub  yuseperkw - 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, lp)
{
	if(!ilosc_perkow)
		return PLUGIN_CONTINUE;
 
	static obroty[33];
 
	if(obroty[id]++ >= 5)
	{
		obroty[id] = 0;
		UstawPerk(id, 0, 0, 0, lp);
		return PLUGIN_CONTINUE;
	}
 
	perk = (perk == -1)? random_num(1, ilosc_perkow): perk;
	if(perk == perk_gracza[!lp][id] && perk)
	{
		UstawPerk(id, perk, wartosc, pokaz_info, lp);
		return PLUGIN_CONTINUE;
	}
	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[lp][id]], "cod_perk_disabled", FP_CELL, FP_CELL);
	ExecuteForward(forward_handle, ret, id, perk);
	DestroyForward(forward_handle);
 
	perk_gracza[lp][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, lp);
		return PLUGIN_CONTINUE;
	}
 
	ExecuteForward( perk_zmieniony, ret, id, perk, wartosc, lp);
 
	if(ret == 4)
	{
		UstawPerk(id, -1, -1, 1, lp);
		return PLUGIN_CONTINUE;
	}
 
	obroty[id] = 0;
	if(pokaz_info &&  perk)
		ColorChat(id, BLUE,  "POMOCNIK: ^x04 Zdobyles %s.", nazwy_perkow[perk]);
 
	perk_gracza[lp][id] = perk;     
	wartosc_perku_gracza[lp][id] = wartosc;
	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(wartosc != 0)
	{
		gracz_ma_tarcze[id] = true;
		fm_give_item(id, "weapon_shield");
	}
	else
	{
		gracz_ma_tarcze[id] = false;
	}
}
 
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_statystyki_gracza[id][zdrowie] = wartosc;
 
public UstawBonusowaInteligencje(id, wartosc)
	bonusowe_statystyki_gracza[id][inteligencja] = wartosc;
 
public UstawBonusowaKondycje(id, wartosc)
	bonusowe_statystyki_gracza[id][kondycja] = wartosc;
 
public UstawBonusowaWytrzymalosc(id, wartosc)
	bonusowe_statystyki_gracza[id][wytrzymalosc] = wartosc;	
 
public UstawBonusoweGrawitacja(id, wartosc)
	bonusowe_statystyki_gracza[id][grawitacja] = wartosc;
 
public UstawBonusowaNiewidzialnosc(id, wartosc)
	bonusowe_statystyki_gracza[id][niewidzialnosc] = wartosc;
 
public UstawBonusowaRegeneracje(id, wartosc)
	bonusowe_statystyki_gracza[id][regeneracja] = wartosc;
 
public UstawBonusowaPrzeladowanie(id, wartosc)
	bonusowe_statystyki_gracza[id][przeladowanie] = wartosc;
 
public PrzydzielZdrowie(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[wytrzymalosc]-statystyki_gracza[id][zdrowie]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][zdrowie] += wartosc;
}
 
public PrzydzielInteligencje(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[wytrzymalosc]-statystyki_gracza[id][inteligencja]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][inteligencja] += wartosc;
}
 
public PrzydzielKondycje(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[wytrzymalosc]-statystyki_gracza[id][kondycja]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][kondycja] += wartosc;
}
 
public PrzydzielWytrzymalosc(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[wytrzymalosc]-statystyki_gracza[id][wytrzymalosc]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][wytrzymalosc] += wartosc;
}
 
public PrzydzielGrawitacje(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[grawitacja]-statystyki_gracza[id][grawitacja]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][grawitacja] += wartosc;
}
 
public PrzydzielNiewidzialnosc(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[niewidzialnosc]-statystyki_gracza[id][niewidzialnosc]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][niewidzialnosc] += wartosc;
}
 
public PrzydzielRegeneracje(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[regeneracja]-statystyki_gracza[id][regeneracja]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][regeneracja] += wartosc;
}
 
public PrzydzielPrzeladowanie(id, wartosc)
{
	wartosc = min(min(punkty_gracza[id], wartosc), limit_statystyk[przeladowanie]-statystyki_gracza[id][przeladowanie]);
 
	punkty_gracza[id] -= wartosc;
	statystyki_gracza[id][przeladowanie] += wartosc;
}
 
public PobierzPerk(plugin, params)
{
	if(params != 3)
		return 0;
 
	new id = get_param(1), lp = get_param(3);
	set_param_byref(2, wartosc_perku_gracza[lp][id]);
	return perk_gracza[lp][id];
}
 
public PobierzWartoscPerku(id, lp)
{
	return wartosc_perku_gracza[lp][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, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][zdrowie];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][zdrowie];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][zdrowie];
 
	return statystyka;
}
 
public PobierzInteligencje(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][inteligencja];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][inteligencja];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][inteligencja];
 
	return statystyka;
}
 
public PobierzKondycje(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][kondycja];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][kondycja];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][kondycja];
 
	return statystyka;
}
 
public PobierzWytrzymalosc(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][wytrzymalosc];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][wytrzymalosc];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][wytrzymalosc];
 
	return statystyka;
}
 
public PobierzGrawitacje(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][grawitacja];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][grawitacja];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][grawitacja];
 
	return statystyka;
}
 
public PobierzNiewidzialnosc(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][niewidzialnosc];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][niewidzialnosc];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][niewidzialnosc];
 
	return statystyka;
}
 
public PobierzRegeneracje(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][regeneracja];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][regeneracja];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][regeneracja];
 
	return statystyka;
}
 
public PobierzPrzeladowanie(id, statystyka_zdobyta, statystyka_klasy, statystyka_bonusowa)
{
	new statystyka;
 
	if(statystyka_zdobyta)
		statystyka += statystyki_gracza[id][przeladowanie];
	if(statystyka_bonusowa)
		statystyka += bonusowe_statystyki_gracza[id][przeladowanie];
	if(statystyka_klasy)
		statystyka += statystyki_klas[klasa_gracza[id]][przeladowanie];
 
	return statystyka;
}
 
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 statystyki_klas[klasa][zdrowie];
	return -1;
}
 
public PobierzInteligencjeKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return statystyki_klas[klasa][inteligencja];
	return -1;
}
 
public PobierzKondycjeKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return statystyki_klas[klasa][kondycja];
	return -1;
}
 
public PobierzWytrzymaloscKlasy(klasa)
{
	if(klasa <= ilosc_klas)
		return statystyki_klas[klasa][wytrzymalosc];
	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);
	statystyki_klas[ilosc_klas][zdrowie] = get_param(4);
	statystyki_klas[ilosc_klas][kondycja] = get_param(5);
	statystyki_klas[ilosc_klas][inteligencja] = get_param(6);
	statystyki_klas[ilosc_klas][wytrzymalosc] = 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 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 }
*/
 

Dodanych wklejek: 11179
Powered By (Pav32) Pastebin © 2011