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 13284447528212 dodana przez Drzanas, 05.02.2012 13:25
Typ:


Drzanas
13284447528212
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.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <sqlx>
#include <ColorChat>
 
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0"
#define AUTHOR "QTM_Peyote & cypis"
 
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_WSKRZES 704
#define ZADANIE_WYSZKOLENIE_SANITARNE 736
#define ZADANIE_POKAZ_REKLAME 768
#define ZADANIE_USTAW_SZYBKOSC 832
 
new SyncHudObj;
new SyncHudObj2;
 
new Punkty[33];
 
new sprite_white;
new sprite_blast;
 
new cvar_doswiadczenie_za_zabojstwo,
cvar_doswiadczenie_za_wygrana,
cvar_limit_poziomu,
cvar_proporcja_poziomu;
 
new Ubrania_CT[4][]={"sas","gsg9","urban","gign"};
new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"};
 
new const maxAmmo[31]={0,52,0,90,1,32,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,32,90,120,90,2,35,90,90,0,100};
new const maxClip[31] = { -1, 13, -1, 10,  1,  7,  1,  30, 30,  1,  30,  20,  25, 30, 35, 25,  12,  20, 
10,  30, 100,  8, 30,  30, 20,  2,  7, 30, 30, -1,  50 };
 
new informacje_przedmiotu_gracza[33][2];
new const nazwy_przedmiotow[][] = {"Brak", 
	"Buty Szturmowego", //1
	"Podwojna Kamizelka", //2
	"Wzmocniona Kamizelka", //3
	"Weteran Noza", //4
	"Zaskoczenie Wroga", //5
	"Plaszcz Partyzanta", //6 
	"Morfina", //7
	"Noz Komandosa", //8
	"Podrecznik Szpiega", //9
	"Tajemnica Generala", //10
	"Notatki Ninji", //11
	"Tajemnica Wojskowa", //12
	"AWP Sniper",//13
	"Adrenalina",//14
	"Tajemnica Admirala",//15
	"Wyszkolenie Sanitarne",//16
	"Kamizelka NASA",//17
	"Wytrenowany Weteran",//18
	"Apteczka",//19
	"Eliminator Rozrzutu",//20
	"Tytanowe Naboje",//21
	"Naboje Pulkownika",//22
	"Ogranicznik Rozrzutu",//23
	"Tarcza SWAT",//24
	"Wytrenowany Rekrut",//25
	"Pancerz Nomexowy",//26
	"Notatki Kapitana",//27
	"Modul odrzutowy"
};
 
new const opisy_przedmiotow[][] = {"Zabij kogos aby dostac przedmiot", 
	"Cicho biegasz", 
	"Obniza uszkodzenia zadawane graczowi o LW",
	"Obniza uszkodzenia zadawane graczowi o LW", 
	"Zadajesz wieksze obrazenia nozem",
	"Gdy trafisz kogos od tylu, obrazenia sa 2 razy wieksze", 
	"Masz LW premii niewidocznosci",
	"1/LW szans do ponownego odrodzenia sie po smierci",
	"Natychmiastowe zabicie z Noza",
	"Masz 1/LW szans na natychmiastowe zabicie z HE. Posiadasz takze ubranie wroga",
	"Natychmiastowe zabicie granatem HE. Zadajesz LW dodatkowych obrazen",
	"Mozesz zrobic podwojny skok w powietrzu",
	"Twoje obrazenia sa zredukowane o 5. Masz 1/LW szans na oslepienie wroga",
	"Natychmiastowe zabicie z AWP",
	"Za kazdego Fraga dostajesz 50 zycia",
	"Za kazdego Fraga dostajesz pelen magazynek oraz +20 hp",
	"Dostajesz 10 HP co 5 sekund",
	"Masz 500 pancerza",
	"Dostajesz +100 HP co runde, wolniej biegasz",
	"Uzyj, aby uleczyc sie do maksymalnej ilosci HP",
	"Nie posiadasz rozrzutu broni",
	"Zadajesz 10 obrazen wiecej",
	"Zadajesz 20 obrazen wiecej",
	"Twoj rozrzut jest mniejszy",
	"Nie dzialaja na ciebie zadne przedmioty",
	"Dostajesz +50 HP co runde, wolniej biegasz",
	"Masz 1/LW szans na odbicie pocisku przez pancerz",
	"Jestes odporny na 3 pociski w kazdej rundzie",
	"Nacisnij CTRL i SPACE aby uzyc modulu, modul laduje sie co 4 sekundy"
};
 
new nazwa_gracza[33][64];
new klasa_gracza[33];
new poziom_gracza[33] = 1;
new doswiadczenie_gracza[33];
 
new nowa_klasa_gracza[33];
 
new punkty_gracza[33];
new zdrowie_gracza[33];
new inteligencja_gracza[33];
new wytrzymalosc_gracza[33];
new Float:redukcja_obrazen_gracza[33];
new kondycja_gracza[33];
new maksymalne_zdrowie_gracza[33];
new Float:szybkosc_gracza[33];
 
enum {NONE = 0, Snajper, Komandos, Strzelec, Obronca, Medyk, Wsparcie, Saper, Demolitions, Rusher, Admiral};
new const zdrowie_klasy[] = { 0, 120, 140, 110, 120, 110, 100, 100, 110, 100, 130};
new const Float:szybkosc_klasy[] = {0.0, 1.2, 1.35, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0, 1.3, 1.15};
new const pancerz_klasy[] = { 0, 100, 100, 100, 150, 100, 0, 100, 100, 0, 150};
new const nazwy_klas[][] = {"Brak",
	"Snajper",
	"Komandos",
	"Strzelec wyborowy",
	"Obronca",
	"Medyk",
	"Wsparcie ogniowe",
	"Saper",
	"Demolitions",
	"Rusher",
	"Admiral (Klasa Premium)"
};
 
new const opisy_klas[][] = {"Brak",
	"Dostaje AWP, scout i deagle, 120hp bazowe, 1/3 szansy natychmiastowego zabicia noza, 110% biegu, 100 pancerza",
	"Dostaje Deagle, 140hp bazowe, Natychmiastowe zabicie z noza (prawy przycisk myszy), 135% biegu, 100 pancerza",
	"Dostaje AK i M4A1, 110hp bazowe, 80 % biegu, 100 pancerza",
	"Dostaje M249 (Krowa), 120hp bazowe, 80% biegu, jest odporny na miny, ma wszystkie granaty, 150 pancerza",
	"Dostaje UMP45, 110hp bazowe, posiada apteczke, 100 pancerza",
	"Dostaje MP5, 100 hp bazowe, Ma dwie rakiety,ktore po trafieniu przeciwnika zadaja dużo obrazen",
	"Dostaje P90, 100hp bazowe, 100 pancerza, Dostaje 3 miny, gdy ktos w nie wejdzie wybuchaja",
	"Dostaje AUG, 110 hp bazowe, 100 pancerza, Ma wszystkie granaty, Dostaje dynamit, który zabiera sporo zycia wszystkim znajdującym się blisko niego",
	"Dostaje szotgana M3, 100 hp bazowe, 130% biegu",
	"Dostaje Famasa, 130 hp bazowe, 120% biegu, za kazde zabojstwo +20 hp oraz pelen magazynek, podwojny skok"
};
 
new ilosc_apteczek_gracza[33];
new ilosc_rakiet_gracza[33];
new Float:poprzednia_rakieta_gracza[33];
new ilosc_min_gracza[33];
new ilosc_dynamitow_gracza[33];
 
new bool:freezetime = true;
 
new lvl_klasy_gracza[33][sizeof nazwy_klas];
new xp_klasy_gracza[33][sizeof nazwy_klas];
new int_klasy_gracza[33][sizeof nazwy_klas];
new zdr_klasy_gracza[33][sizeof nazwy_klas];
new wyt_klasy_gracza[33][sizeof nazwy_klas];
new kon_klasy_gracza[33][sizeof nazwy_klas];
 
new polaczony_raz[33], wczytane_dane[33];
new Handle:info;
 
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
 
	register_think("Apteczka","ApteczkaThink");
 
	RegisterHam(Ham_TakeDamage, "player", "Obrazenia");
	RegisterHam(Ham_TakeDamage, "player", "ObrazeniaPost", 1);
 
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
 
	//RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
	register_event("DeathMsg", "eDeath", "a");
 
	RegisterHam(Ham_Touch, "armoury_entity", "DotykBroni");
	RegisterHam(Ham_Touch, "weapon_shield", "DotykBroni");
	RegisterHam(Ham_Touch, "weaponbox", "DotykBroni");
 
	register_touch("Rocket", "*" , "DotykRakiety");
	register_touch("Mine", "player",  "DotykMiny");
 
	register_forward(FM_CmdStart, "CmdStart");
	register_forward(FM_EmitSound, "EmitSound");
 
	register_logevent("PoczatekRundy", 2, "1=Round_Start"); 
 
	register_event("CurWeapon","CurWeapon","be", "1=1");
	register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
	register_event("SendAudio", "WygranaTerro" , "a", "2&%!MRAD_terwin");
	register_event("SendAudio", "WygranaCT", "a", "2&%!MRAD_ctwin");
 
	cvar_doswiadczenie_za_zabojstwo = register_cvar("cod_killxp", "10");
	cvar_doswiadczenie_za_wygrana = register_cvar("cod_winxp", "40");
	cvar_limit_poziomu = register_cvar("cod_maxlevel", "201"); 
	cvar_proporcja_poziomu = register_cvar("cod_levelratio", "35"); 
 
	register_cvar("cod_host", "");
	register_cvar("cod_user", "");
	register_cvar("cod_pass", "");
	register_cvar("cod_db", "");
	register_cvar("cod_table", "codmod_table");
 
	register_clcmd("say /klasa", "WybierzKlase");
	register_clcmd("say /class", "WybierzKlase");
	register_clcmd("say /klasy", "OpisKlasy");
	register_clcmd("say /classinfo", "OpisKlasy");
	register_clcmd("say /perk", "OpisPrzedmiotu");
	register_clcmd("say /perki", "OpisPerkow");
	register_clcmd("say /perks", "OpisPerkow");
	register_clcmd("say /item", "Pomoc");
	register_clcmd("say /przedmiot", "OpisPrzedmiotu");
	register_clcmd("say /drop", "WyrzucPrzedmiot");
	register_clcmd("say /wyrzuc", "WyrzucPrzedmiot");
	register_clcmd("say /reset", "KomendaResetujPunkty");
	register_clcmd("say /statystyki", "PrzydzielPunkty");
	register_clcmd("say /pomoc", "Pomoc");
	register_clcmd("useperk", "UzyjPerku");
	register_clcmd("radio3", "UzyjPerku");
	register_clcmd("fullupdate", "BlokujKomende");
 
	register_clcmd("cl_autobuy", "BlokujKomende");
	register_clcmd("cl_rebuy", "BlokujKomende");
	register_clcmd("cl_setautobuy","BlokujKomende");
	register_clcmd("rebuy", "BlokujKomende");
	register_clcmd("autobuy", "BlokujKomende");
	register_clcmd("glock", "BlokujKomende");
	register_clcmd("usp", "BlokujKomende");
	register_clcmd("p228", "BlokujKomende");
	register_clcmd("deagle", "BlokujKomende");
	register_clcmd("elites", "BlokujKomende");
	register_clcmd("fn57", "BlokujKomende");
	register_clcmd("m3", "BlokujKomende");
	register_clcmd("autoshotgun", "BlokujKomende");
	register_clcmd("xm1024", "BlokujKomende");
	register_clcmd("mac10", "BlokujKomende");
	register_clcmd("tmp", "BlokujKomende");
	register_clcmd("mp5", "BlokujKomende");
	register_clcmd("ump45", "BlokujKomende");
	register_clcmd("p90", "BlokujKomende");
	register_clcmd("galil", "BlokujKomende");
	register_clcmd("ak47", "BlokujKomende");
	register_clcmd("scout", "BlokujKomende");
	register_clcmd("sg552", "BlokujKomende");
	register_clcmd("awp", "BlokujKomende");
	register_clcmd("g3sg1", "BlokujKomende");
	register_clcmd("famas", "BlokujKomende");
	register_clcmd("m4a1", "BlokujKomende");
	register_clcmd("bullpup", "BlokujKomende");
	register_clcmd("sg550", "BlokujKomende");
	register_clcmd("m249", "BlokujKomende");
	register_clcmd("shield", "BlokujKomende");
	register_clcmd("hegren", "BlokujKomende");
	register_clcmd("sgren", "BlokujKomende");
	register_clcmd("flash", "BlokujKomende");
 
	register_concmd("cod_setlvl", "cmd_setlvl", ADMIN_RCON, "<name> <level>");
 
	SyncHudObj = CreateHudSyncObj();
	SyncHudObj2 = CreateHudSyncObj();
}
 
public plugin_cfg() 
{	
	new Host[64], User[64], Pass[64], DB[64], Table[32];
 
	get_cvar_string("cod_host", Host, 63);
	get_cvar_string("cod_user", User, 63);
	get_cvar_string("cod_pass", Pass, 63);
	get_cvar_string("cod_db", DB, 63);
	get_cvar_string("cod_table", Table, 31);
 
	info = SQL_MakeDbTuple(Host, User, Pass, DB);
	if(info == Empty_Handle){
		set_fail_state("Brak polaczenia z baza danych!");
		return;
	}
 
	new szTemp[1028], iLen = 0
	iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "CREATE TABLE IF NOT EXISTS `%s` (`nick` VARCHAR(64)", Table);
 
	for(new i=1; i<sizeof nazwy_klas; i++)
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i` VARCHAR(32)", i);
 
	iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")");
 
	SQL_ThreadQuery(info, "IgnoreHandle", szTemp);
}
 
public plugin_precache()
{
	sprite_white = precache_model("sprites/white.spr") ;
	sprite_blast = precache_model("sprites/dexplo.spr");
 
	precache_sound("QTM_CodMod/select.wav");
	precache_sound("QTM_CodMod/start.wav");
	precache_sound("QTM_CodMod/start2.wav");
	precache_sound("QTM_CodMod/levelup.wav");
 
	precache_model("models/w_medkit.mdl");
	precache_model("models/rpgrocket.mdl");
	precache_model("models/mine.mdl");
}
 
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);
 
	static moze_skoczyc;
	new button = pev(id, pev_button);
	new oldbutton = pev(id, pev_oldbuttons);
	new flags = pev(id, pev_flags);
 
	if(informacje_przedmiotu_gracza[id][0] == 11 || klasa_gracza[id] == Admiral)
	{
		if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && moze_skoczyc & (1<<id))
		{
			moze_skoczyc &= ~(1<<id)  
			new Float:velocity[3];
			pev(id, pev_velocity, velocity)
			velocity[2] = random_float(265.0,285.0);
			set_pev(id, pev_velocity, velocity)
		}
		else if(flags & FL_ONGROUND){	
			moze_skoczyc |= (1<<id)
		}
	}
 
	if(button & IN_ATTACK)
	{
		new Float:punchangle[3];
 
		if(informacje_przedmiotu_gracza[id][0] == 20)
			set_pev(id, pev_punchangle, punchangle);
		if(informacje_przedmiotu_gracza[id][0] == 23)
		{
			pev(id, pev_punchangle, punchangle);
			for(new i=0; i<3;i++) 
				punchangle[i]*=0.9;
			set_pev(id, pev_punchangle, punchangle);
		}
	}
 
	if(informacje_przedmiotu_gracza[id][0] == 28 && button & IN_JUMP && button & IN_DUCK && flags & FL_ONGROUND && get_gametime() > informacje_przedmiotu_gracza[id][1]+4.0)
	{
		informacje_przedmiotu_gracza[id][1] = floatround(get_gametime());
		new Float:velocity[3];
		velocity_by_aim(id, 700, velocity) 
		velocity[2] = random_float(265.0,285.0);
		set_pev(id, pev_velocity, velocity)
	}
	return FMRES_IGNORED;
}
 
public Odrodzenie(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_CONTINUE;
 
	if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE))
		set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b");
 
	if(nowa_klasa_gracza[id])
	{
		klasa_gracza[id] = nowa_klasa_gracza[id];
		nowa_klasa_gracza[id] = 0;
		strip_user_weapons(id);
		give_item(id, "weapon_knife");
		switch(get_user_team(id))
		{
			case 1: give_item(id, "weapon_glock18");
				case 2: give_item(id, "weapon_usp");
			}
		WczytajDane(id, klasa_gracza[id]);
	}
 
	if(!klasa_gracza[id])
	{
		WybierzKlase(id);
		return PLUGIN_CONTINUE;
	}
 
	switch(klasa_gracza[id])
	{
		case Snajper:
		{
			give_item(id, "weapon_awp");
			give_item(id, "weapon_scout");
			give_item(id, "weapon_deagle");
		}
		case Komandos:
		{
			give_item(id, "weapon_deagle");
		}
		case Strzelec:
		{
			give_item(id, "weapon_m4a1");
			give_item(id, "weapon_ak47");
		}
		case Obronca:
		{
			give_item(id, "weapon_m249");
			give_item(id, "weapon_hegrenade");
			give_item(id, "weapon_flashbang");				
			give_item(id, "weapon_smokegrenade");
		}
		case Medyk:
		{
			give_item(id, "weapon_ump45");
		}	
		case Wsparcie:
		{
			give_item(id, "weapon_mp5navy");
		}
		case Saper:
		{
			give_item(id, "weapon_p90");
		}
		case Demolitions:
		{
			give_item(id, "weapon_aug");
			give_item(id, "weapon_hegrenade");
			give_item(id, "weapon_flashbang");
			give_item(id, "weapon_smokegrenade");
		}
		case Rusher:
		{
			give_item(id, "weapon_m3");
		}
		case Admiral:
		{
			give_item(id, "weapon_famas");
		}
	}
 
	if(punkty_gracza[id]>0)
		PrzydzielPunkty(id);
 
	if(informacje_przedmiotu_gracza[id][0] == 10 || informacje_przedmiotu_gracza[id][0] == 9)
		give_item(id, "weapon_hegrenade");
 
	if(informacje_przedmiotu_gracza[id][0] == 9)
		ZmienUbranie(id, 0);
 
	if(informacje_przedmiotu_gracza[id][0] == 1)
		set_user_footsteps(id, 1);
 
	if(informacje_przedmiotu_gracza[id][0] == 13)
		give_item(id, "weapon_awp");
 
	if(informacje_przedmiotu_gracza[id][0] == 19)
		informacje_przedmiotu_gracza[id][1] = 1;
 
	if(informacje_przedmiotu_gracza[id][0] == 27)
		informacje_przedmiotu_gracza[id][1] = 3;
 
	new weapons[32];
	new weaponsnum;
	get_user_weapons(id, weapons, weaponsnum);
	for(new i=0; i<weaponsnum; i++)
		if(maxAmmo[weapons[i]] > 0)
		cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
 
	redukcja_obrazen_gracza[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(wytrzymalosc_gracza[id])))/100);
	maksymalne_zdrowie_gracza[id] = zdrowie_klasy[klasa_gracza[id]]+zdrowie_gracza[id]*2;
	szybkosc_gracza[id] = (250.0*szybkosc_klasy[klasa_gracza[id]])+(kondycja_gracza[id]*1.3);
 
	if(informacje_przedmiotu_gracza[id][0] == 18)
	{
		maksymalne_zdrowie_gracza[id] += 100;
		szybkosc_gracza[id] -= szybkosc_gracza[id]*0.4;
	}
 
	if(informacje_przedmiotu_gracza[id][0] == 25)
	{
		maksymalne_zdrowie_gracza[id] += 50;
		szybkosc_gracza[id] -= szybkosc_gracza[id]*0.3;
	}
 
	set_user_armor(id, pancerz_klasy[klasa_gracza[id]]);
	set_user_health(id, maksymalne_zdrowie_gracza[id]);
	if(informacje_przedmiotu_gracza[id][0] == 17)
		set_user_armor(id, 500);
 
	return PLUGIN_CONTINUE;
}
 
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/start");
				case 2: client_cmd(id, "spk QTM_CodMod/start2");
			}
	}
}
 
public NowaRunda()
{
	freezetime = true;
	new iEnt = find_ent_by_class(-1, "Mine");
	while(iEnt > 0) 
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		iEnt = find_ent_by_class(iEnt, "Mine");	
	}
}
 
public Obrazenia(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_alive(this) || !is_user_connected(this) || informacje_przedmiotu_gracza[this][0] == 24 || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker) || !klasa_gracza[idattacker])
		return HAM_IGNORED;
 
	new health = get_user_health(this);
	new weapon = get_user_weapon(idattacker);
 
	if(health < 2)
		return HAM_IGNORED;
 
	if(informacje_przedmiotu_gracza[this][0] == 27 && informacje_przedmiotu_gracza[this][1]>0)
	{
		informacje_przedmiotu_gracza[this][1]--;
		return HAM_SUPERCEDE;
	}
 
	if(wytrzymalosc_gracza[this]>0)
		damage -= redukcja_obrazen_gracza[this]*damage;
 
	if(informacje_przedmiotu_gracza[this][0] == 2 || informacje_przedmiotu_gracza[this][0] == 3)
		damage-=(float(informacje_przedmiotu_gracza[this][1])<damage)? float(informacje_przedmiotu_gracza[this][1]): damage;
 
	if(informacje_przedmiotu_gracza[idattacker][0] == 5 && !UTIL_In_FOV(this, idattacker) && UTIL_In_FOV(idattacker, this))
		damage*=2.0;
 
	if(informacje_przedmiotu_gracza[idattacker][0] == 10)
		damage+=informacje_przedmiotu_gracza[idattacker][1];
 
	if(informacje_przedmiotu_gracza[this][0] == 12)
		damage-=(5.0<damage)? 5.0: damage;
 
	if(weapon == CSW_AWP && damagebits & DMG_BULLET && informacje_przedmiotu_gracza[idattacker][0] == 13)
		damage=float(health);
 
	if(informacje_przedmiotu_gracza[idattacker][0] == 21)
		damage+=10;
 
	if(informacje_przedmiotu_gracza[idattacker][0] == 22)
		damage+=20;
 
	if(damagebits & (1<<24))
	{
		if((informacje_przedmiotu_gracza[idattacker][0] == 9 && random_num(1, informacje_przedmiotu_gracza[idattacker][1]) == 1) || informacje_przedmiotu_gracza[idattacker][0] == 10)
			damage = float(health);	
	}
 
	if(weapon == CSW_KNIFE && damagebits & DMG_BULLET)
	{
		if(informacje_przedmiotu_gracza[this][0] == 4)
			damage=damage*1.4+inteligencja_gracza[idattacker];
		if(((informacje_przedmiotu_gracza[idattacker][0] == 8 || (klasa_gracza[idattacker] == Snajper && random_num(1, 2) == 1)) || klasa_gracza[idattacker] == Komandos) && !(pev(idattacker, pev_oldbuttons) & IN_ATTACK))
			damage = float(health);
	}
 
	if(informacje_przedmiotu_gracza[this][0] == 26 && random_num(1, informacje_przedmiotu_gracza[this][1]) == 1)
	{
		SetHamParamEntity(3, this);
		SetHamParamEntity(1, idattacker);
	}
 
	SetHamParamFloat(4, damage);
	return HAM_IGNORED;
}
 
public ObrazeniaPost(id, idinflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_alive(attacker) || !is_user_connected(attacker) || !klasa_gracza[attacker])
		return PLUGIN_CONTINUE;
 
	if(get_user_team(id) != get_user_team(attacker))
	{
		if(informacje_przedmiotu_gracza[attacker][0] == 12 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1)
			Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
 
		while(damage>20)
		{
			damage-=20;
			doswiadczenie_gracza[attacker]++;
		}
	}
	SprawdzPoziom(attacker);
	return PLUGIN_CONTINUE;
}
 
public eDeath(){
 
	new attacker = read_data(1); 
	new victim = read_data(2);
	new hs = read_data(3);
	new weapon = get_user_weapon(attacker);
 
	if(!is_user_alive(attacker) || !is_user_connected(attacker))
		return PLUGIN_CONTINUE;
	if(get_user_team(victim) != get_user_team(attacker) && klasa_gracza[attacker])
	{
		new doswiadczenia_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		new nowe_doswiadczenie = 0;
		if(attacker == victim){
			Punkty[attacker] = 0
			return PLUGIN_HANDLED;
		}
		else{
			Punkty[attacker]++;
		}
		if(hs && klasa_gracza[attacker] == Komandos){
			nowe_doswiadczenie += doswiadczenia_za_zabojstwo;
			doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
			ColorChat(attacker, GREEN, "[COD]^x01 Dostales^x03 2^x01 doswiadczenia za trafienie w glowe.");
			set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
			ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_doswiadczenie);
			return PLUGIN_HANDLED;
			if(klasa_gracza[attacker] != Komandos){
				return PLUGIN_CONTINUE
			}
 
		}
		if(Punkty[attacker] >= 2 && klasa_gracza[attacker] == Snajper && weapon == CSW_AWP){
			doswiadczenie_gracza[attacker] += 5
			ColorChat(attacker, GREEN, "[COD]^x01 Dostales^x03 5^x01 doswiadczenia za %d z AWP", Punkty[attacker]);
			nowe_doswiadczenie += doswiadczenia_za_zabojstwo;
			doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
			set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
			ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_doswiadczenie);
			return PLUGIN_HANDLED;
 
		}
		if(!is_user_alive(attacker)){
			Punkty[attacker] = 0
		}
		else{
			return PLUGIN_HANDLED
		}
		SprawdzPoziom(attacker)
 
	}
	return PLUGIN_HANDLED
}
/*public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_alive(attacker) || !is_user_connected(attacker))
	return PLUGIN_CONTINUE;
 
	new weapon = get_user_weapon(attacker);
	new zdrowie = get_user_health(attacker);
 
	if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
	{
		new doswiadczenia_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		new nowe_doswiadczenie = 0;
 
		nowe_doswiadczenie += doswiadczenia_za_zabojstwo;
 
		if(klasa_gracza[id] == Admiral && klasa_gracza[attacker] != Admiral)
			nowe_doswiadczenie += doswiadczenia_za_zabojstwo*2;
 
		if(poziom_gracza[id] > poziom_gracza[attacker])
			nowe_doswiadczenie += poziom_gracza[id] - poziom_gracza[attacker];
 
		if(klasa_gracza[attacker] == Admiral || informacje_przedmiotu_gracza[attacker][0] == 15 && maxClip[weapon] != -1)
		{
 
			new nowe_zdrowie = (zdrowie+20<maksymalne_zdrowie_gracza[attacker])? zdrowie+20: maksymalne_zdrowie_gracza[attacker];
			set_user_clip(attacker, maxClip[weapon]);
			set_user_health(attacker, nowe_zdrowie);
		}
 
		if(!informacje_przedmiotu_gracza[attacker][0])
			DajPrzedmiot(attacker, random_num(1, sizeof nazwy_przedmiotow-1));
 
		if(informacje_przedmiotu_gracza[attacker][0] == 14)
		{
			new nowe_zdrowie = (zdrowie+50<maksymalne_zdrowie_gracza[attacker])? zdrowie+50: maksymalne_zdrowie_gracza[attacker];
			set_user_health(attacker, nowe_zdrowie);
		}
 
		set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
		ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_doswiadczenie);
 
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
	SprawdzPoziom(attacker);
 
	if(informacje_przedmiotu_gracza[id][0] == 7 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1)
		set_task(0.1, "Wskrzes", id+ZADANIE_WSKRZES);
 
	return PLUGIN_CONTINUE;
}*/
 
public client_connect(id)
{
	klasa_gracza[id] = 0;
	poziom_gracza[id] = 1;
	doswiadczenie_gracza[id] = 0;
	punkty_gracza[id] = 0;
	zdrowie_gracza[id] = 0;
	inteligencja_gracza[id] = 0;
	wytrzymalosc_gracza[id] = 0;
	kondycja_gracza[id] = 0;
	maksymalne_zdrowie_gracza[id] = 0;
	szybkosc_gracza[id] = 0.0;
 
	wczytane_dane[id] = 0;
	polaczony_raz[id] = 0;
 
	for(new i=1 ;i<sizeof nazwy_klas; i++)
	{
		lvl_klasy_gracza[id][i] = 0;
		xp_klasy_gracza[id][i] = 0;
		int_klasy_gracza[id][i] = 0;
		zdr_klasy_gracza[id][i] = 0;
		wyt_klasy_gracza[id][i] = 0;
		kon_klasy_gracza[id][i] = 0;
	}
 
	get_user_name(id, nazwa_gracza[id], 63);
	replace_all(nazwa_gracza[id], 63, "'", "\'");
	replace_all(nazwa_gracza[id], 63, "`", "\`");
 
	UsunTask(id);
	UsunPrzedmiot(id);
 
	set_task(10.0, "PokazReklame", id+ZADANIE_POKAZ_REKLAME);
}
 
public client_disconnect(id)
{
	UsunTask(id);
	ZapiszDane(id);
	UsunPrzedmiot(id);
}
 
public UsunTask(id)
{
	remove_task(id+ZADANIE_POKAZ_INFORMACJE);
	remove_task(id+ZADANIE_POKAZ_REKLAME);	
	remove_task(id+ZADANIE_USTAW_SZYBKOSC);
	remove_task(id+ZADANIE_WSKRZES);
	remove_task(id+ZADANIE_WYSZKOLENIE_SANITARNE);
}
 
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 OpisPerkow(id)
{
	new menu = menu_create("Wybierz Perk:", "OpisPerkow_Handle");
	for(new i=1; i<sizeof nazwy_przedmiotow; i++)
		menu_additem(menu, nazwy_przedmiotow[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 OpisPerkow_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	client_print(id, print_chat, "[COD:MW] %s: %s", nazwy_przedmiotow[item+1], opisy_przedmiotow[item+1]);
	menu_display(id, menu);
 
	return PLUGIN_CONTINUE;
}
 
public OpisKlasy(id)
{
	new menu = menu_create("Wybierz klase:", "OpisKlasy_Handle");
	for(new i=1; i<sizeof nazwy_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);
}
 
public OpisKlasy_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	client_print(id, print_chat, "[COD:MW] %s: %s", nazwy_klas[item+1], opisy_klas[item+1]);
	menu_display(id, menu);
 
	return PLUGIN_CONTINUE;
}
 
public WybierzKlase(id)
{
	if(polaczony_raz[id])
	{
		client_print(id, print_center, "Poczekaj na klase, a nie spamujesz!");
		return PLUGIN_CONTINUE;
	}
	if(!wczytane_dane[id])
	{
		new szTemp[1024], data[1], Table[32];
		get_cvar_string("cod_table", Table, 31);
 
		data[0] = id;
 
		formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE `nick` = '%s'", Table, nazwa_gracza[id])
		SQL_ThreadQuery(info, "KlasaHandle", szTemp, data, sizeof data)
		polaczony_raz[id] = 1;
	}
	else
	{
		lvl_klasy_gracza[id][klasa_gracza[id]] = poziom_gracza[id];
		xp_klasy_gracza[id][klasa_gracza[id]] = doswiadczenie_gracza[id];
		int_klasy_gracza[id][klasa_gracza[id]] = inteligencja_gracza[id];
		zdr_klasy_gracza[id][klasa_gracza[id]] = zdrowie_gracza[id];
		wyt_klasy_gracza[id][klasa_gracza[id]] = wytrzymalosc_gracza[id];
		kon_klasy_gracza[id][klasa_gracza[id]] = kondycja_gracza[id];
 
		new klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
		for(new i=1 ;i<sizeof nazwy_klas; i++)
		{
			format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
	}
	return PLUGIN_CONTINUE;
}
 
public KlasaHandle(failstate, Handle:query, error[], errnum, Data[], size){
	if(failstate != TQUERY_SUCCESS){
		log_amx("MySQL Select error: %s",error);
		return;
	}
	new id = Data[0]
	new szTemp[2028], klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
 
	if(SQL_NumRows(query))
	{
		new daneklasy[6][32];
		for(new i=1 ;i<sizeof nazwy_klas; i++)
		{
			formatex(szTemp, charsmax(szTemp), "%i", i);
			SQL_ReadResult(query, SQL_FieldNameToNum(query, szTemp), szTemp, charsmax(szTemp))
 
			replace_all(szTemp, charsmax(szTemp), "#", " ");
 
			parse(szTemp, daneklasy[0], 31, daneklasy[1], 31, daneklasy[2], 31, daneklasy[3], 31, daneklasy[4], 31, daneklasy[5], 31);
			lvl_klasy_gracza[id][i] = str_to_num(daneklasy[0])
			xp_klasy_gracza[id][i] = str_to_num(daneklasy[1])
			int_klasy_gracza[id][i] = str_to_num(daneklasy[2])
			zdr_klasy_gracza[id][i] = str_to_num(daneklasy[3])
			wyt_klasy_gracza[id][i] = str_to_num(daneklasy[4])
			kon_klasy_gracza[id][i] = str_to_num(daneklasy[5])
 
			formatex(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
		wczytane_dane[id] = 1;
	} 
	else
	{
		new iLen = 0, Table[32];
		get_cvar_string("cod_table", Table, 31);
 
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "INSERT INTO `%s` (`nick`", Table);
 
		for(new i=1; i<sizeof nazwy_klas; i++)
			iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i`", i);
 
		iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ") VALUES (");
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "'%s'", nazwa_gracza[id]);
 
		for(new i=1; i<sizeof nazwy_klas; i++)
			iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ", '1#0#0#0#0#0'");
 
		iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")");
		SQL_ThreadQuery(info, "IgnoreHandle", szTemp)
 
		for(new i=1 ;i<sizeof nazwy_klas; i++)
		{
			formatex(klasa, 49, "%s \yPoziom: 1", nazwy_klas[i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
	}
	polaczony_raz[id] = 0;
}
 
public WybierzKlase_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
 
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}	
 
	if(item == klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	if(item == Admiral && !(get_user_flags(id) & ADMIN_LEVEL_H))
	{
		client_print(id, print_chat, "[COD:MW] Nie masz uprawnien aby kozystac z klasy premium.");
		WybierzKlase(id);
		return PLUGIN_CONTINUE;
	}
 
	if(klasa_gracza[id])
	{
		nowa_klasa_gracza[id] = item;
		client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
	}
	else
	{
		klasa_gracza[id] = item;
		WczytajDane(id, klasa_gracza[id]);
		Odrodzenie(id);
	}
	return PLUGIN_CONTINUE;
}
 
public PrzydzielPunkty(id)
{
	new inteligencja[65];
	new zdrowie[60];
	new wytrzymalosc[60];
	new kondycja[60];
	new tytul[25];
	format(inteligencja, 64, "Inteligencja: \r%i \y(Zwieksza obrazenia zadawane przedmiotami)", inteligencja_gracza[id]);
	format(zdrowie, 59, "Zycie: \r%i \y(Zwieksza zycie)", zdrowie_gracza[id]);
	format(wytrzymalosc, 59, "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", wytrzymalosc_gracza[id]);
	format(kondycja, 59, "Kondycja: \r%i \y(Zwieksza tempo chodu)", kondycja_gracza[id]);
	format(tytul, 24, "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_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]*2-2;
	inteligencja_gracza[id] = 0;
	zdrowie_gracza[id] = 0;
	kondycja_gracza[id] = 0;
	wytrzymalosc_gracza[id] = 0;
 
	if(punkty_gracza[id])
		PrzydzielPunkty(id);
}
 
public WyszkolenieSanitarne(id)
{
	id -= ZADANIE_WYSZKOLENIE_SANITARNE;
	if(informacje_przedmiotu_gracza[id][0] != 16)
		return PLUGIN_CONTINUE;
	set_task(5.0, "WyszkolenieSanitarne", id+ZADANIE_WYSZKOLENIE_SANITARNE);
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;
	new health = get_user_health(id);
	new new_health = (health+10<maksymalne_zdrowie_gracza[id])?health+10:maksymalne_zdrowie_gracza[id];
	set_user_health(id, new_health);
	return PLUGIN_CONTINUE;
}
 
public StworzApteczke(id)
{
	if (!ilosc_apteczek_gracza[id])
	{
		client_print(id, print_center, "Masz tylko 2 apteczki na runde!");
		return PLUGIN_CONTINUE;
	}
 
	if(inteligencja_gracza[id] < 1)
		client_print(id, print_center, "Aby wzmocnic apteczke, zwieksz inteligencje!");
 
	ilosc_apteczek_gracza[id]--;
 
	new Float:origin[3];
	entity_get_vector(id, EV_VEC_origin, origin);
 
	new ent = create_entity("info_target");
	entity_set_string(ent, EV_SZ_classname, "Apteczka");
	entity_set_edict(ent, EV_ENT_owner, id);
	entity_set_int(ent, EV_INT_solid, SOLID_NOT);
	entity_set_vector(ent, EV_VEC_origin, origin);
	entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1);
 
 
	entity_set_model(ent, "models/w_medkit.mdl");
	set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) 	;
	drop_to_floor(ent);
 
	entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
 
	return PLUGIN_CONTINUE;
}
 
public ApteczkaThink(ent)
{
	new id = entity_get_edict(ent, EV_ENT_owner);
	new totem_dist = 300;
	new totem_heal = 5+floatround(inteligencja_gracza[id]*0.5);
	if (entity_get_edict(ent, EV_ENT_euser2) == 1)
	{		
		new Float:forigin[3], origin[3];
		entity_get_vector(ent, EV_VEC_origin, forigin);
		FVecIVec(forigin,origin);
 
		new entlist[33];
		new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist, 32,forigin);
 
		for (new i=0; i < numfound; i++)
		{		
			new pid = entlist[i];
 
			if (get_user_team(pid) != get_user_team(id))
				continue;
 
			new zdrowie = get_user_health(pid);
			new nowe_zdrowie = (zdrowie+totem_heal<maksymalne_zdrowie_gracza[pid])?zdrowie+totem_heal:maksymalne_zdrowie_gracza[pid];
			if (is_user_alive(pid)) set_user_health(pid, nowe_zdrowie);		
		}
 
		entity_set_edict(ent, EV_ENT_euser2, 0);
		entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5);
 
		return PLUGIN_CONTINUE;
	}
 
	if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id))
	{
		remove_entity(ent);
		return PLUGIN_CONTINUE;
	}
 
	if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time())
		set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) ;
 
	new Float:forigin[3], origin[3];
	entity_get_vector(ent, EV_VEC_origin, forigin);
	FVecIVec(forigin,origin);
 
	//Find people near and give them health
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
	write_byte( TE_BEAMCYLINDER );
	write_coord( origin[0] );
	write_coord( origin[1] );
	write_coord( origin[2] );
	write_coord( origin[0] );
	write_coord( origin[1] + totem_dist );
	write_coord( origin[2] + totem_dist );
	write_short( sprite_white );
	write_byte( 0 ); // startframe
	write_byte( 0 ); // framerate
	write_byte( 10 ); // life
	write_byte( 10 ); // width
	write_byte( 255 ); // noise
	write_byte( 255 ); // r, g, b
	write_byte( 100 );// r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 128 ); // brightness
	write_byte( 5 ); // speed
	message_end();
 
	entity_set_edict(ent, EV_ENT_euser2 ,1);
	entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5);
 
 
	return PLUGIN_CONTINUE;
 
}
 
public StworzRakiete(id)
{
	if (!ilosc_rakiet_gracza[id])
	{
		client_print(id, print_center, "Wykrzystales juz wszystkie rakiety!");
		return PLUGIN_CONTINUE;
	}
 
	if(poprzednia_rakieta_gracza[id] + 2.0 > get_gametime())
	{
		client_print(id, print_center, "Rakiet mozesz uzywac co 2 sekundy!");
		return PLUGIN_CONTINUE;
	}
 
	if (is_user_alive(id))
	{	
		if(inteligencja_gracza[id] < 1)
			client_print(id, print_center, "Aby wzmocnic rakiete, zwieksz inteligencje!");
 
		poprzednia_rakieta_gracza[id] = get_gametime();
		ilosc_rakiet_gracza[id]--;
 
		new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
 
		entity_get_vector(id, EV_VEC_v_angle, vAngle);
		entity_get_vector(id, EV_VEC_origin , Origin);
 
		new Ent = create_entity("info_target");
 
		entity_set_string(Ent, EV_SZ_classname, "Rocket");
		entity_set_model(Ent, "models/rpgrocket.mdl");
 
		vAngle[0] *= -1.0;
 
		entity_set_origin(Ent, Origin);
		entity_set_vector(Ent, EV_VEC_angles, vAngle);
 
		entity_set_int(Ent, EV_INT_effects, 2);
		entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
		entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
		entity_set_edict(Ent, EV_ENT_owner, id);
 
		VelocityByAim(id, 1000 , Velocity);
		entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
	}	
	return PLUGIN_CONTINUE;
}
 
public PolozDynamit(id)
{
	if(!ilosc_dynamitow_gracza[id])
	{
		client_print(id, print_center, "Wykorzystales juz caly dynamit!");
		return PLUGIN_CONTINUE;
	}
 
	if(inteligencja_gracza[id] < 1)
		client_print(id, print_center, "Aby wzmocnic dynamit, zwieksz inteligencje!");
 
	ilosc_dynamitow_gracza[id]--;
	new Float:fOrigin[3], iOrigin[3];
	entity_get_vector( id, EV_VEC_origin, fOrigin);
	iOrigin[0] = floatround(fOrigin[0]);
	iOrigin[1] = floatround(fOrigin[1]);
	iOrigin[2] = floatround(fOrigin[2]);
 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
	write_byte(TE_EXPLOSION);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2]);
	write_short(sprite_blast);
	write_byte(32);
	write_byte(20);
	write_byte(0);
	message_end();
 
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
	write_byte( TE_BEAMCYLINDER );
	write_coord( iOrigin[0] );
	write_coord( iOrigin[1] );
	write_coord( iOrigin[2] );
	write_coord( iOrigin[0] );
	write_coord( iOrigin[1] + 300 );
	write_coord( iOrigin[2] + 300 );
	write_short( sprite_white );
	write_byte( 0 ); // startframe
	write_byte( 0 ); // framerate
	write_byte( 10 ); // life
	write_byte( 10 ); // width
	write_byte( 255 ); // noise
	write_byte( 255 ); // r, g, b
	write_byte( 100 );// r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 128 ); // brightness
	write_byte( 8 ); // speed
	message_end();
 
	new entlist[33];
	new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);
 
	for (new i=0; i < numfound; i++)
	{		
		new pid = entlist[i];
 
		if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid) || informacje_przedmiotu_gracza[pid][0] == 24)
			continue;
		ExecuteHam(Ham_TakeDamage, pid, 0, id, 90.0+float(inteligencja_gracza[id]) , 1);
	}
	return PLUGIN_CONTINUE;
}
 
public PostawMine(id)
{
	if (!ilosc_min_gracza[id])
	{
		client_print(id, print_center, "Wykorzystales juz wszystkie miny!");
		return PLUGIN_CONTINUE;
	}
 
	if(inteligencja_gracza[id] < 1)
		client_print(id, print_center, "Aby wzmocnic miny, zwieksz inteligencje!");
 
	new Float:origin[3];
	entity_get_vector(id, EV_VEC_origin, origin);
 
	new ent = create_entity("info_target");
	entity_set_string(ent ,EV_SZ_classname, "Mine");
	entity_set_edict(ent ,EV_ENT_owner, id);
	entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
	entity_set_origin(ent, origin);
	entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
 
	entity_set_model(ent, "models/mine.mdl");
	entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
 
	drop_to_floor(ent);
 
	entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) ;
 
	set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50)	;
 
	ilosc_min_gracza[id]--;
	return PLUGIN_CONTINUE;
}
 
public DotykMiny(ent, id)
{
	new attacker = entity_get_edict(ent, EV_ENT_owner);
	if (get_user_team(attacker) != get_user_team(id))
	{
		new Float:fOrigin[3], iOrigin[3];
		entity_get_vector( ent, EV_VEC_origin, fOrigin);
		iOrigin[0] = floatround(fOrigin[0]);
		iOrigin[1] = floatround(fOrigin[1]);
		iOrigin[2] = floatround(fOrigin[2]);
 
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
		write_byte(TE_EXPLOSION);
		write_coord(iOrigin[0]);
		write_coord(iOrigin[1]);
		write_coord(iOrigin[2]);
		write_short(sprite_blast);
		write_byte(32); // scale
		write_byte(20); // framerate
		write_byte(0);// flags
		message_end();
		new entlist[33];
		new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);
 
		for (new i=0; i < numfound; i++)
		{		
			new pid = entlist[i];
 
			if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || informacje_przedmiotu_gracza[pid][0] == 24 || klasa_gracza[id] == Obronca)
				continue;
 
			ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencja_gracza[attacker]), 1);
		}
		remove_entity(ent);
	}
}
 
public DotykRakiety(ent)
{
	if ( !is_valid_ent(ent))
		return;
 
	new attacker = entity_get_edict(ent, EV_ENT_owner);
 
	new Float:fOrigin[3], iOrigin[3];
	entity_get_vector( ent, EV_VEC_origin, fOrigin);	
	iOrigin[0] = floatround(fOrigin[0]);
	iOrigin[1] = floatround(fOrigin[1]);
	iOrigin[2] = floatround(fOrigin[2]);
 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
	write_byte(TE_EXPLOSION);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2]);
	write_short(sprite_blast);
	write_byte(32); // scale
	write_byte(20); // framerate
	write_byte(0);// flags
	message_end();
 
	new entlist[33];
	new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);
 
	for (new i=0; i < numfound; i++)
	{		
		new pid = entlist[i];
 
		if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || informacje_przedmiotu_gracza[pid][0] == 24)
			continue;
		ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 55.0+float(inteligencja_gracza[attacker]), 1);
	}
	remove_entity(ent);
}
 
public CurWeapon(id)
{
	if(freezetime || !klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	UstawSzybkosc(id);
	return PLUGIN_CONTINUE;
}
 
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch) 
{
	if(equal(szSound, "common/wpn_denyselect.wav"))
	{
		if(ilosc_apteczek_gracza[id]>0 && klasa_gracza[id] == Medyk)
			StworzApteczke(id);
		if(ilosc_rakiet_gracza[id]>0 && klasa_gracza[id] == Wsparcie)
			StworzRakiete(id);
		if(ilosc_min_gracza[id]>0 && klasa_gracza[id] == Saper)
			PostawMine(id);
		if(ilosc_dynamitow_gracza[id]>0 && klasa_gracza[id] == Demolitions)
			PolozDynamit(id)
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}
 
public UzyjPerku(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED;
 
	if(informacje_przedmiotu_gracza[id][0] == 19 && informacje_przedmiotu_gracza[id][1]>0)
	{
		set_user_health(id, maksymalne_zdrowie_gracza[id]);
		informacje_przedmiotu_gracza[id][1]--;
	}
 
	if(ilosc_apteczek_gracza[id]>0 && klasa_gracza[id] != Medyk)
		StworzApteczke(id);
	if(ilosc_rakiet_gracza[id]>0 && klasa_gracza[id] != Wsparcie)
		StworzRakiete(id);
	if(ilosc_min_gracza[id]>0 && klasa_gracza[id] != Saper)
		PostawMine(id);
	if(ilosc_dynamitow_gracza[id]>0 && klasa_gracza[id] != Demolitions)
		PolozDynamit(id)
	return PLUGIN_HANDLED;
}
 
public WczytajDane(id, klasa)
{
	poziom_gracza[id] = max(1, lvl_klasy_gracza[id][klasa]);
	doswiadczenie_gracza[id] = xp_klasy_gracza[id][klasa];
	inteligencja_gracza[id] = int_klasy_gracza[id][klasa];
	zdrowie_gracza[id] = zdr_klasy_gracza[id][klasa];
	wytrzymalosc_gracza[id] = wyt_klasy_gracza[id][klasa];
	kondycja_gracza[id] = kon_klasy_gracza[id][klasa];
	punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
	return PLUGIN_CONTINUE;
}
 
public ZapiszDane(id)
{
	if(!klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	new szTemp[512], szTemp2[512], Table[32];
	get_cvar_string("cod_table", Table, 31);
 
	formatex(szTemp2, charsmax(szTemp2),"%i#%i#%i#%i#%i#%i", poziom_gracza[id], doswiadczenie_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]);
	formatex(szTemp, charsmax(szTemp), "UPDATE `%s` SET `%i` = '%s' WHERE `nick` = '%s'", Table, klasa_gracza[id], szTemp2, nazwa_gracza[id]);
	SQL_ThreadQuery(info, "IgnoreHandle",szTemp)
	return PLUGIN_CONTINUE;
}
 
public IgnoreHandle(FailState,Handle:query,Error[],Errcode,Data[],DataSize)
{
	if(FailState != TQUERY_SUCCESS){
		log_amx("MySQL save error: %s", Error);
		return;
	}
}
 
public plugin_end()
	SQL_FreeHandle(info)
 
public WyrzucPrzedmiot(id)
{
	if(informacje_przedmiotu_gracza[id][0])
	{
		client_print(id, print_chat, "[COD:MW] Wyrzuciles %s.", nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);
		UsunPrzedmiot(id);
	}
	else
		client_print(id, print_chat, "[COD:MW] Nie masz zadnego przedmiotu.", nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);
}
 
public UsunPrzedmiot(id)
{
	informacje_przedmiotu_gracza[id][0] = 0;
	informacje_przedmiotu_gracza[id][1] = 0;
	if(is_user_alive(id))
	{
		set_user_footsteps(id, 0);
		set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255);
		ZmienUbranie(id, 1);
	}
}
 
public DajPrzedmiot(id, przedmiot)
{
	UsunPrzedmiot(id);
	informacje_przedmiotu_gracza[id][0] = przedmiot;
	client_print(id, print_chat, "[COD:MW] Zdobyles %s.", nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);	
 
	switch(przedmiot)
	{
		case 1:
		{
			set_user_footsteps(id, 1);
		}
		case 2:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(3,6);
		}
		case 3:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(6, 11);
		}
		case 5:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(6, 9);
		}
		case 6:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(100, 150);
			set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, informacje_przedmiotu_gracza[id][1]);
		}
		case 7:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(2, 4);
		}
		case 8:
		{
			if(klasa_gracza[id] == Komandos)
				DajPrzedmiot(id, random_num(1, sizeof nazwy_przedmiotow-1));
		}
		case 9:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(1, 3);
			ZmienUbranie(id, 0);
			give_item(id, "weapon_hegrenade");
		}
		case 10:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(4, 8);
			give_item(id, "weapon_hegrenade");
		}
		case 12:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(1, 4);
		}
		case 13:
		{
			give_item(id, "weapon_awp");
		}
		case 15:
		{
			if(klasa_gracza[id] == Admiral)
				DajPrzedmiot(id, random_num(1, sizeof nazwy_przedmiotow-1));
		}
		case 16:
		{
			set_task(5.0, "WyszkolenieSanitarne", id+ZADANIE_WYSZKOLENIE_SANITARNE);
		}
		case 19:
		{
			informacje_przedmiotu_gracza[id][1] = 1;
		}
		case 26:
		{
			informacje_przedmiotu_gracza[id][1] = random_num(3, 6);
		}
		case 27:
		{
			informacje_przedmiotu_gracza[id][1] = 3;
		}
	}
}
 
public OpisPrzedmiotu(id)
{
	new opis_przedmiotu[128];
	new losowa_wartosc[3];
	num_to_str(informacje_przedmiotu_gracza[id][1], losowa_wartosc, 2);
	format(opis_przedmiotu, 127, opisy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);
	replace_all(opis_przedmiotu, 127, "LW", losowa_wartosc);
 
	client_print(id, print_chat, "Przedmiot: %s.", nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);
	client_print(id, print_chat, "Opis: %s.", opis_przedmiotu);
}
 
public Wskrzes(id)
{
	id-=ZADANIE_WSKRZES;
	ExecuteHamB(Ham_CS_RoundRespawn, id);
}
 
public SprawdzPoziom(id)
{	
	new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
	if(poziom_gracza[id] < limit_poziomu)
	{
		while(doswiadczenie_gracza[id] >= doswiadczenie_poziomu(poziom_gracza[id]))
		{
			poziom_gracza[id]++;
			punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
			set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
			ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
			client_cmd(id, "spk QTM_CodMod/levelupmw");
		}
 
		while(doswiadczenie_gracza[id] < doswiadczenie_poziomu(poziom_gracza[id]-1))
		{
			poziom_gracza[id]--;
			ResetujPunkty(id);
			set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
			ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
		}
 
		if(poziom_gracza[id] > limit_poziomu)
		{
			poziom_gracza[id] = limit_poziomu;
			ResetujPunkty(id);
		}	
		ZapiszDane(id);
	}
	if(poziom_gracza[id] > limit_poziomu)
	{
		poziom_gracza[id] = limit_poziomu;
		ResetujPunkty(id);
		ZapiszDane(id);
	}	
}
 
public PokazInformacje(id) 
{
	id -= ZADANIE_POKAZ_INFORMACJE;
 
	if(!is_user_alive(id) && is_user_connected(id))
	{
		new target = entity_get_int(id, EV_INT_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], doswiadczenie_poziomu(poziom_gracza[target]), poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]);
 
		return PLUGIN_CONTINUE;
	}
	set_hudmessage(255, 0, 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]", nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], doswiadczenie_poziomu(poziom_gracza[id]), poziom_gracza[id], nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]);
	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, a edytowanej przez Cypis");
	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^n \wZapraszamy na \y GamesBoard.pl", -1, "Pomoc");
 
public doswiadczenie_poziomu(poziom)
	return power(poziom, 2)*get_pcvar_num(cvar_proporcja_poziomu);
 
public UstawSzybkosc(id)
{
	id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0;
 
	if(klasa_gracza[id])
		set_pev(id, pev_maxspeed, szybkosc_gracza[id]);
}
 
public ZmienUbranie(id,reset)
{
	if (id<1 || id>32 || !is_user_connected(id)) 
		return PLUGIN_CONTINUE;
 
	if (reset)
		cs_reset_user_model(id);
	else
	{
		new num = random_num(0,3);
		switch(get_user_team(id))
		{
			case 1: cs_set_user_model(id, Ubrania_CT[num]);
				case 2:cs_set_user_model(id, Ubrania_Terro[num]);
			}
	}
 
	return PLUGIN_CONTINUE;
}
 
public cmd_setlvl(id, level, cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	new arg[2][33];
	read_argv(1, arg[0], 32);
	read_argv(2, arg[1], 32);
	new player = cmd_target(id, arg[0], 8);
	new value = str_to_num(arg[1]);
 
	doswiadczenie_gracza[player] = doswiadczenie_poziomu(value);
	poziom_gracza[player] = 0;
	SprawdzPoziom(player);
	return PLUGIN_HANDLED;
}
 
public DotykBroni(weapon,id)
{
	new model[23];
	entity_get_string(weapon, EV_SZ_model, model, 22);
	if (!is_user_connected(id) || entity_get_edict(weapon, EV_ENT_owner) == id || equal(model, "models/w_backpack.mdl"))
		return HAM_IGNORED;
	return HAM_SUPERCEDE;
}
 
public BlokujKomende()
	return PLUGIN_HANDLED;
 
stock bool:UTIL_In_FOV(id,target)
{
	if (Find_Angle(id,target,9999.9) > 0.0)
		return true;
 
	return false;
}
 
stock Float:Find_Angle(Core,Target,Float:dist)
{
	new Float:vec2LOS[2];
	new Float:flDot;
	new Float:CoreOrigin[3];
	new Float:TargetOrigin[3];
	new Float:CoreAngles[3];
 
	pev(Core,pev_origin,CoreOrigin);
	pev(Target,pev_origin,TargetOrigin);
 
	if (get_distance_f(CoreOrigin,TargetOrigin) > dist)
		return 0.0;
 
	pev(Core,pev_angles, CoreAngles);
 
	for ( new i = 0; i < 2; i++ )
		vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i];
 
	new Float:veclength = Vec2DLength(vec2LOS);
 
	//Normalize V2LOS
	if (veclength <= 0.0)
	{
		vec2LOS[0] = 0.0;
		vec2LOS[1] = 0.0;
	}
	else
	{
		new Float:flLen = 1.0 / veclength;
		vec2LOS[0] = vec2LOS[0]*flLen;
		vec2LOS[1] = vec2LOS[1]*flLen;
	}
 
	//Do a makevector to make v_forward right
	engfunc(EngFunc_MakeVectors,CoreAngles);
 
	new Float:v_forward[3];
	new Float:v_forward2D[2];
	get_global_vector(GL_v_forward, v_forward);
 
	v_forward2D[0] = v_forward[0];
	v_forward2D[1] = v_forward[1];
 
	flDot = vec2LOS[0]*v_forward2D[0]+vec2LOS[1]*v_forward2D[1];
 
	if ( flDot > 0.5 )
	{
		return flDot;
	}
 
	return 0.0;
}
 
stock Float:Vec2DLength( Float:Vec[2] )  
{ 
	return floatsqroot(Vec[0]*Vec[0] + Vec[1]*Vec[1] );
}
 
stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
	message_begin( MSG_ONE, get_user_msgid("ScreenFade"),{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 set_user_clip(id, ammo)
{
	new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);
	get_weaponname(weapon, weaponname, 31);
	while ((weaponid = find_ent_by_class(weaponid, weaponname)) != 0)
		if(entity_get_edict(weaponid, EV_ENT_owner) == id) 
	{
		set_pdata_int(weaponid, 51, ammo, 4);
		return weaponid;
	}
	return 0;
}