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 131661472411155 dodana przez ParadisO, 21.09.2011 15:18
Typ:


paradiso
131661472411155
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
960.
961.
962.
963.
964.
965.
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
999.
1000.
1001.
1002.
1003.
1004.
1005.
1006.
1007.
1008.
1009.
1010.
1011.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
1026.
1027.
1028.
1029.
1030.
1031.
1032.
1033.
1034.
1035.
1036.
1037.
1038.
1039.
1040.
1041.
1042.
1043.
1044.
1045.
1046.
1047.
1048.
1049.
1050.
1051.
1052.
1053.
1054.
1055.
1056.
1057.
1058.
1059.
1060.
1061.
1062.
1063.
1064.
1065.
1066.
1067.
1068.
1069.
1070.
1071.
1072.
1073.
1074.
1075.
1076.
1077.
1078.
1079.
1080.
1081.
1082.
1083.
1084.
1085.
1086.
1087.
1088.
1089.
1090.
1091.
1092.
1093.
1094.
1095.
1096.
1097.
1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.
1109.
1110.
1111.
1112.
1113.
1114.
1115.
1116.
1117.
1118.
1119.
1120.
1121.
1122.
1123.
1124.
1125.
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133.
1134.
1135.
1136.
1137.
1138.
1139.
1140.
1141.
1142.
1143.
1144.
1145.
1146.
1147.
1148.
1149.
1150.
1151.
1152.
1153.
1154.
1155.
1156.
1157.
1158.
1159.
1160.
1161.
1162.
1163.
1164.
1165.
1166.
1167.
1168.
1169.
1170.
1171.
1172.
1173.
1174.
1175.
1176.
1177.
1178.
1179.
1180.
1181.
1182.
1183.
1184.
1185.
1186.
1187.
1188.
1189.
1190.
1191.
1192.
1193.
1194.
1195.
1196.
1197.
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205.
1206.
1207.
1208.
1209.
1210.
1211.
1212.
1213.
1214.
1215.
1216.
1217.
1218.
1219.
1220.
1221.
1222.
1223.
1224.
1225.
1226.
1227.
1228.
1229.
1230.
1231.
1232.
1233.
1234.
1235.
1236.
1237.
1238.
1239.
1240.
1241.
1242.
1243.
1244.
1245.
1246.
1247.
1248.
1249.
1250.
1251.
1252.
1253.
1254.
1255.
1256.
1257.
1258.
1259.
1260.
1261.
1262.
1263.
1264.
1265.
1266.
1267.
1268.
1269.
1270.
1271.
1272.
1273.
1274.
1275.
1276.
1277.
1278.
1279.
1280.
1281.
1282.
1283.
1284.
1285.
1286.
1287.
1288.
1289.
1290.
1291.
1292.
1293.
1294.
1295.
1296.
1297.
1298.
1299.
1300.
1301.
1302.
1303.
1304.
1305.
1306.
1307.
1308.
1309.
1310.
1311.
1312.
1313.
1314.
1315.
1316.
1317.
1318.
1319.
1320.
1321.
1322.
1323.
1324.
1325.
1326.
1327.
1328.
1329.
1330.
1331.
1332.
1333.
1334.
1335.
1336.
1337.
1338.
1339.
1340.
1341.
1342.
1343.
1344.
1345.
1346.
1347.
1348.
1349.
1350.
1351.
1352.
1353.
1354.
1355.
1356.
1357.
1358.
1359.
1360.
1361.
1362.
1363.
1364.
1365.
1366.
1367.
1368.
1369.
1370.
1371.
1372.
1373.
1374.
1375.
1376.
1377.
1378.
1379.
1380.
1381.
1382.
1383.
1384.
1385.
1386.
1387.
1388.
1389.
1390.
1391.
1392.
1393.
1394.
1395.
1396.
1397.
1398.
1399.
1400.
1401.
1402.
1403.
1404.
1405.
1406.
1407.
1408.
1409.
1410.
1411.
1412.
1413.
1414.
1415.
1416.
1417.
1418.
1419.
1420.
1421.
1422.
1423.
1424.
1425.
1426.
1427.
1428.
1429.
1430.
1431.
1432.
1433.
1434.
1435.
1436.
1437.
1438.
1439.
1440.
1441.
1442.
1443.
1444.
1445.
1446.
1447.
1448.
1449.
1450.
1451.
1452.
1453.
1454.
1455.
1456.
1457.
1458.
1459.
1460.
1461.
1462.
1463.
1464.
1465.
1466.
1467.
1468.
1469.
1470.
1471.
1472.
1473.
1474.
1475.
1476.
1477.
1478.
1479.
1480.
1481.
1482.
1483.
1484.
1485.
1486.
1487.
1488.
1489.
1490.
1491.
1492.
1493.
1494.
1495.
1496.
1497.
1498.
1499.
1500.
1501.
1502.
1503.
1504.
1505.
1506.
1507.
1508.
1509.
1510.
1511.
1512.
1513.
1514.
1515.
1516.
1517.
1518.
1519.
1520.
1521.
1522.
1523.
1524.
1525.
1526.
1527.
1528.
1529.
1530.
1531.
1532.
1533.
1534.
1535.
1536.
1537.
1538.
1539.
1540.
1541.
1542.
1543.
1544.
1545.
1546.
1547.
1548.
1549.
1550.
1551.
1552.
1553.
1554.
1555.
1556.
1557.
1558.
1559.
1560.
1561.
1562.
1563.
1564.
1565.
1566.
1567.
1568.
1569.
1570.
1571.
1572.
1573.
1574.
1575.
1576.
1577.
1578.
1579.
1580.
1581.
1582.
1583.
1584.
1585.
1586.
1587.
1588.
1589.
1590.
1591.
1592.
1593.
1594.
1595.
1596.
1597.
1598.
1599.
1600.
1601.
1602.
1603.
1604.
1605.
1606.
1607.
1608.
1609.
1610.
1611.
1612.
1613.
1614.
1615.
1616.
1617.
1618.
1619.
1620.
1621.
1622.
1623.
1624.
1625.
1626.
1627.
1628.
1629.
1630.
1631.
1632.
1633.
1634.
1635.
1636.
1637.
1638.
1639.
1640.
1641.
1642.
1643.
1644.
1645.
1646.
1647.
1648.
1649.
1650.
1651.
1652.
1653.
1654.
1655.
1656.
1657.
1658.
1659.
1660.
1661.
1662.
1663.
1664.
1665.
1666.
1667.
1668.
1669.
1670.
1671.
1672.
1673.
1674.
1675.
1676.
1677.
1678.
1679.
1680.
1681.
1682.
1683.
1684.
1685.
1686.
1687.
1688.
1689.
1690.
1691.
1692.
1693.
1694.
1695.
1696.
1697.
1698.
1699.
1700.
1701.
1702.
1703.
1704.
1705.
1706.
1707.
1708.
1709.
1710.
1711.
1712.
1713.
1714.
1715.
1716.
1717.
1718.
1719.
1720.
1721.
1722.
1723.
1724.
1725.
1726.
1727.
1728.
1729.
1730.
1731.
1732.
1733.
1734.
1735.
1736.
1737.
1738.
1739.
1740.
1741.
1742.
1743.
1744.
1745.
1746.
1747.
1748.
1749.
1750.
1751.
1752.
1753.
1754.
1755.
1756.
1757.
1758.
1759.
1760.
1761.
1762.
1763.
1764.
1765.
1766.
1767.
1768.
1769.
1770.
1771.
1772.
1773.
1774.
1775.
1776.
1777.
1778.
1779.
1780.
1781.
1782.
1783.
1784.
1785.
1786.
1787.
1788.
1789.
1790.
1791.
1792.
1793.
1794.
1795.
1796.
1797.
1798.
1799.
1800.
1801.
1802.
1803.
1804.
1805.
1806.
1807.
1808.
1809.
1810.
1811.
1812.
1813.
1814.
1815.
1816.
1817.
1818.
1819.
1820.
1821.
1822.
1823.
1824.
1825.
1826.
1827.
1828.
1829.
1830.
1831.
1832.
1833.
1834.
1835.
1836.
1837.
1838.
1839.
1840.
1841.
1842.
1843.
1844.
1845.
1846.
1847.
1848.
1849.
1850.
1851.
1852.
1853.
1854.
1855.
1856.
1857.
1858.
1859.
1860.
1861.
1862.
1863.
1864.
1865.
1866.
1867.
1868.
1869.
1870.
1871.
1872.
1873.
1874.
1875.
1876.
1877.
1878.
1879.
1880.
1881.
1882.
1883.
1884.
1885.
1886.
1887.
1888.
1889.
1890.
1891.
1892.
1893.
1894.
1895.
1896.
1897.
1898.
1899.
1900.
1901.
1902.
1903.
1904.
1905.
1906.
1907.
1908.
1909.
1910.
1911.
1912.
1913.
1914.
1915.
1916.
1917.
1918.
1919.
1920.
1921.
1922.
1923.
1924.
1925.
1926.
1927.
1928.
1929.
1930.
1931.
1932.
1933.
1934.
1935.
1936.
1937.
1938.
1939.
1940.
1941.
1942.
1943.
1944.
1945.
1946.
1947.
1948.
1949.
1950.
1951.
1952.
1953.
1954.
1955.
1956.
1957.
1958.
1959.
1960.
1961.
1962.
1963.
1964.
1965.
1966.
1967.
1968.
1969.
1970.
1971.
1972.
1973.
1974.
1975.
1976.
1977.
1978.
1979.
1980.
1981.
1982.
1983.
1984.
1985.
1986.
1987.
1988.
1989.
1990.
1991.
1992.
1993.
1994.
1995.
1996.
1997.
1998.
1999.
2000.
2001.
2002.
2003.
2004.
2005.
2006.
2007.
2008.
2009.
2010.
2011.
2012.
2013.
2014.
2015.
2016.
2017.
2018.
2019.
2020.
2021.
2022.
2023.
2024.
2025.
2026.
2027.
2028.
2029.
2030.
2031.
2032.
2033.
2034.
2035.
2036.
2037.
2038.
2039.
2040.
2041.
2042.
2043.
2044.
2045.
2046.
2047.
2048.
2049.
2050.
2051.
2052.
2053.
2054.
2055.
2056.
2057.
2058.
2059.
2060.
2061.
2062.
2063.
2064.
2065.
2066.
2067.
2068.
2069.
2070.
2071.
2072.
2073.
2074.
2075.
2076.
2077.
2078.
2079.
2080.
2081.
2082.
2083.
2084.
2085.
2086.
2087.
2088.
2089.
2090.
2091.
2092.
2093.
2094.
2095.
2096.
2097.
2098.
2099.
2100.
2101.
2102.
2103.
2104.
2105.
2106.
2107.
2108.
2109.
2110.
2111.
2112.
2113.
2114.
2115.
2116.
2117.
2118.
2119.
2120.
2121.
2122.
2123.
2124.
2125.
2126.
2127.
2128.
2129.
2130.
2131.
2132.
2133.
2134.
2135.
2136.
2137.
2138.
2139.
2140.
2141.
2142.
2143.
2144.
2145.
2146.
2147.
2148.
2149.
2150.
2151.
2152.
2153.
2154.
2155.
2156.
2157.
2158.
2159.
2160.
2161.
2162.
2163.
2164.
2165.
2166.
2167.
2168.
2169.
2170.
2171.
2172.
2173.
2174.
2175.
2176.
2177.
2178.
2179.
2180.
2181.
2182.
2183.
2184.
2185.
2186.
2187.
2188.
2189.
2190.
2191.
2192.
2193.
2194.
2195.
2196.
2197.
2198.
2199.
2200.
2201.
2202.
2203.
2204.
2205.
2206.
2207.
2208.
2209.
2210.
2211.
2212.
2213.
2214.
2215.
2216.
2217.
2218.
2219.
2220.
2221.
2222.
2223.
2224.
2225.
2226.
2227.
2228.
2229.
2230.
2231.
2232.
2233.
2234.
2235.
2236.
2237.
2238.
2239.
2240.
2241.
2242.
2243.
2244.
2245.
2246.
2247.
2248.
2249.
2250.
2251.
2252.
2253.
2254.
2255.
2256.
2257.
2258.
2259.
2260.
2261.
2262.
2263.
2264.
2265.
2266.
2267.
2268.
2269.
2270.
2271.
2272.
2273.
2274.
2275.
2276.
2277.
2278.
2279.
2280.
2281.
2282.
2283.
2284.
2285.
2286.
2287.
2288.
2289.
2290.
2291.
2292.
2293.
2294.
2295.
2296.
2297.
2298.
2299.
2300.
2301.
2302.
2303.
2304.
2305.
2306.
2307.
2308.
2309.
2310.
2311.
2312.
2313.
2314.
2315.
2316.
2317.
2318.
2319.
2320.
2321.
2322.
2323.
2324.
2325.
2326.
2327.
2328.
2329.
2330.
2331.
2332.
2333.
2334.
2335.
2336.
2337.
2338.
2339.
2340.
2341.
2342.
2343.
2344.
2345.
2346.
2347.
2348.
2349.
2350.
2351.
2352.
2353.
2354.
2355.
2356.
2357.
2358.
2359.
2360.
2361.
2362.
2363.
2364.
2365.
2366.
2367.
2368.
2369.
2370.
2371.
2372.
2373.
2374.
2375.
2376.
2377.
2378.
2379.
2380.
2381.
2382.
2383.
2384.
2385.
2386.
2387.
2388.
2389.
2390.
2391.
2392.
2393.
2394.
2395.
2396.
2397.
2398.
2399.
2400.
2401.
2402.
2403.
2404.
2405.
2406.
2407.
2408.
2409.
2410.
2411.
2412.
2413.
2414.
2415.
2416.
2417.
2418.
2419.
2420.
2421.
2422.
2423.
2424.
2425.
2426.
2427.
2428.
2429.
2430.
2431.
2432.
2433.
2434.
2435.
2436.
2437.
2438.
2439.
2440.
2441.
2442.
2443.
2444.
2445.
2446.
2447.
2448.
2449.
2450.
2451.
2452.
2453.
2454.
2455.
2456.
2457.
2458.
2459.
2460.
2461.
2462.
2463.
2464.
2465.
2466.
2467.
2468.
2469.
2470.
2471.
2472.
2473.
2474.
2475.
2476.
2477.
2478.
2479.
2480.
2481.
2482.
2483.
2484.
2485.
2486.
2487.
2488.
2489.
2490.
2491.
2492.
2493.
2494.
2495.
2496.
2497.
2498.
2499.
2500.
2501.
2502.
2503.
2504.
2505.
2506.
2507.
2508.
2509.
2510.
2511.
2512.
2513.
2514.
2515.
2516.
2517.
2518.
2519.
2520.
2521.
2522.
2523.
2524.
2525.
2526.
2527.
2528.
2529.
2530.
2531.
2532.
2533.
2534.
2535.
2536.
2537.
2538.
2539.
2540.
2541.
2542.
2543.
2544.
2545.
2546.
2547.
2548.
2549.
2550.
2551.
2552.
2553.
2554.
2555.
2556.
2557.
2558.
2559.
2560.
2561.
2562.
2563.
2564.
2565.
2566.
2567.
2568.
2569.
2570.
2571.
2572.
2573.
2574.
2575.
2576.
2577.
2578.
2579.
2580.
2581.
2582.
2583.
2584.
2585.
2586.
2587.
2588.
2589.
2590.
2591.
2592.
2593.
2594.
2595.
2596.
2597.
2598.
2599.
2600.
2601.
2602.
2603.
2604.
2605.
2606.
2607.
2608.
2609.
2610.
2611.
2612.
2613.
2614.
2615.
2616.
2617.
2618.
2619.
2620.
2621.
2622.
2623.
2624.
2625.
2626.
2627.
2628.
2629.
2630.
2631.
2632.
2633.
2634.
2635.
2636.
2637.
2638.
2639.
2640.
2641.
2642.
2643.
2644.
2645.
2646.
2647.
2648.
2649.
2650.
2651.
2652.
2653.
2654.
2655.
2656.
2657.
2658.
2659.
2660.
2661.
2662.
2663.
2664.
2665.
2666.
2667.
2668.
2669.
2670.
2671.
2672.
2673.
2674.
2675.
2676.
2677.
2678.
2679.
2680.
2681.
2682.
2683.
2684.
2685.
2686.
2687.
2688.
2689.
2690.
2691.
2692.
2693.
2694.
2695.
2696.
2697.
2698.
2699.
2700.
2701.
2702.
2703.
2704.
2705.
2706.
2707.
2708.
2709.
2710.
2711.
2712.
2713.
2714.
2715.
2716.
2717.
2718.
2719.
2720.
2721.
2722.
2723.
2724.
2725.
2726.
2727.
2728.
2729.
2730.
2731.
2732.
2733.
2734.
2735.
2736.
2737.
2738.
2739.
2740.
2741.
2742.
2743.
2744.
2745.
2746.
2747.
2748.
2749.
2750.
2751.
2752.
2753.
2754.
2755.
2756.
2757.
2758.
2759.
2760.
2761.
2762.
2763.
2764.
2765.
2766.
2767.
2768.
2769.
2770.
2771.
2772.
2773.
2774.
2775.
2776.
2777.
2778.
2779.
2780.
2781.
2782.
2783.
2784.
2785.
2786.
2787.
2788.
2789.
2790.
2791.
2792.
2793.
2794.
2795.
2796.
2797.
2798.
2799.
2800.
2801.
2802.
2803.
2804.
2805.
2806.
2807.
2808.
2809.
2810.
2811.
2812.
2813.
2814.
2815.
2816.
2817.
2818.
2819.
2820.
2821.
2822.
2823.
2824.
2825.
2826.
2827.
2828.
2829.
2830.
2831.
2832.
2833.
2834.
2835.
2836.
2837.
2838.
2839.
2840.
2841.
2842.
2843.
2844.
2845.
2846.
2847.
2848.
2849.
2850.
2851.
2852.
2853.
2854.
2855.
2856.
2857.
2858.
2859.
2860.
2861.
2862.
2863.
2864.
2865.
2866.
2867.
2868.
2869.
2870.
2871.
2872.
2873.
2874.
2875.
2876.
2877.
2878.
2879.
2880.
2881.
2882.
2883.
2884.
2885.
2886.
2887.
2888.
2889.
2890.
2891.
2892.
2893.
2894.
2895.
2896.
2897.
2898.
2899.
2900.
2901.
2902.
2903.
2904.
2905.
2906.
2907.
2908.
2909.
2910.
2911.
2912.
2913.
2914.
2915.
2916.
2917.
2918.
2919.
2920.
2921.
2922.
2923.
2924.
2925.
2926.
2927.
2928.
2929.
2930.
2931.
2932.
2933.
2934.
2935.
2936.
2937.
2938.
2939.
2940.
2941.
2942.
2943.
2944.
2945.
2946.
2947.
2948.
2949.
2950.
2951.
2952.
2953.
2954.
2955.
2956.
2957.
2958.
2959.
2960.
2961.
2962.
2963.
2964.
2965.
2966.
2967.
2968.
2969.
2970.
2971.
2972.
2973.
2974.
2975.
2976.
2977.
2978.
2979.
2980.
2981.
2982.
2983.
2984.
2985.
2986.
2987.
2988.
2989.
2990.
2991.
2992.
2993.
2994.
2995.
2996.
2997.
2998.
2999.
3000.
3001.
3002.
3003.
3004.
3005.
3006.
3007.
3008.
3009.
3010.
3011.
3012.
3013.
3014.
3015.
3016.
3017.
3018.
3019.
3020.
3021.
3022.
3023.
3024.
3025.
3026.
3027.
3028.
3029.
3030.
3031.
3032.
3033.
3034.
3035.
3036.
3037.
3038.
3039.
3040.
3041.
3042.
3043.
3044.
3045.
3046.
3047.
3048.
3049.
3050.
3051.
3052.
3053.
3054.
3055.
3056.
3057.
3058.
3059.
3060.
3061.
3062.
3063.
3064.
3065.
3066.
3067.
3068.
3069.
3070.
3071.
3072.
3073.
3074.
3075.
3076.
3077.
3078.
3079.
3080.
3081.
3082.
3083.
3084.
3085.
3086.
3087.
3088.
3089.
3090.
3091.
3092.
3093.
3094.
3095.
3096.
3097.
3098.
3099.
3100.
3101.
3102.
3103.
3104.
3105.
3106.
3107.
3108.
3109.
3110.
3111.
3112.
3113.
3114.
3115.
3116.
3117.
3118.
3119.
3120.
3121.
3122.
3123.
3124.
3125.
3126.
3127.
3128.
3129.
3130.
3131.
3132.
3133.
3134.
3135.
3136.
3137.
3138.
3139.
3140.
3141.
3142.
3143.
3144.
3145.
3146.
3147.
3148.
3149.
3150.
3151.
3152.
3153.
3154.
3155.
3156.
3157.
3158.
3159.
3160.
3161.
3162.
3163.
3164.
3165.
3166.
3167.
3168.
3169.
3170.
3171.
3172.
3173.
3174.
3175.
3176.
3177.
3178.
3179.
3180.
3181.
3182.
3183.
3184.
3185.
3186.
3187.
3188.
3189.
3190.
3191.
3192.
3193.
3194.
3195.
3196.
3197.
3198.
3199.
3200.
3201.
3202.
3203.
3204.
3205.
3206.
3207.
3208.
3209.
3210.
3211.
3212.
3213.
3214.
3215.
3216.
3217.
3218.
3219.
3220.
3221.
3222.
3223.
3224.
3225.
3226.
3227.
3228.
3229.
3230.
3231.
3232.
3233.
3234.
3235.
3236.
3237.
3238.
3239.
3240.
3241.
3242.
3243.
3244.
3245.
3246.
3247.
3248.
3249.
3250.
3251.
3252.
3253.
3254.
3255.
3256.
3257.
3258.
3259.
3260.
3261.
3262.
3263.
3264.
3265.
3266.
3267.
3268.
3269.
3270.
3271.
3272.
3273.
3274.
3275.
3276.
3277.
3278.
3279.
3280.
3281.
3282.
3283.
3284.
3285.
3286.
3287.
3288.
3289.
3290.
3291.
3292.
3293.
3294.
3295.
3296.
3297.
3298.
3299.
3300.
3301.
3302.
3303.
3304.
3305.
3306.
3307.
3308.
3309.
3310.
3311.
3312.
3313.
3314.
3315.
3316.
3317.
3318.
3319.
3320.
3321.
3322.
3323.
3324.
3325.
3326.
3327.
3328.
3329.
3330.
3331.
3332.
3333.
3334.
3335.
3336.
3337.
3338.
3339.
3340.
3341.
3342.
3343.
3344.
3345.
3346.
3347.
3348.
3349.
3350.
3351.
3352.
3353.
3354.
3355.
3356.
3357.
3358.
3359.
3360.
3361.
3362.
3363.
3364.
3365.
3366.
3367.
3368.
3369.
3370.
3371.
3372.
3373.
3374.
3375.
3376.
3377.
3378.
3379.
3380.
3381.
3382.
3383.
3384.
3385.
3386.
3387.
3388.
3389.
3390.
3391.
3392.
3393.
3394.
3395.
3396.
3397.
3398.
3399.
3400.
3401.
3402.
3403.
3404.
3405.
3406.
3407.
3408.
3409.
3410.
3411.
3412.
3413.
3414.
3415.
3416.
3417.
3418.
3419.
3420.
3421.
3422.
3423.
3424.
3425.
3426.
3427.
3428.
3429.
3430.
3431.
3432.
3433.
3434.
3435.
3436.
3437.
3438.
3439.
3440.
3441.
3442.
3443.
3444.
3445.
3446.
3447.
3448.
3449.
3450.
3451.
3452.
3453.
3454.
3455.
3456.
3457.
3458.
3459.
3460.
3461.
3462.
3463.
3464.
3465.
3466.
3467.
3468.
3469.
3470.
3471.
3472.
3473.
3474.
3475.
3476.
3477.
3478.
3479.
3480.
3481.
3482.
3483.
3484.
3485.
3486.
3487.
3488.
3489.
3490.
3491.
3492.
3493.
3494.
3495.
3496.
3497.
3498.
3499.
3500.
3501.
3502.
3503.
3504.
3505.
3506.
3507.
3508.
3509.
3510.
3511.
3512.
3513.
3514.
3515.
3516.
3517.
3518.
3519.
3520.
3521.
3522.
3523.
3524.
3525.
3526.
3527.
3528.
3529.
3530.
3531.
3532.
3533.
3534.
3535.
3536.
3537.
3538.
3539.
3540.
3541.
3542.
3543.
3544.
3545.
3546.
3547.
3548.
3549.
3550.
3551.
3552.
3553.
3554.
3555.
3556.
3557.
3558.
3559.
3560.
3561.
3562.
3563.
3564.
3565.
3566.
3567.
3568.
3569.
3570.
3571.
3572.
3573.
3574.
3575.
3576.
3577.
3578.
3579.
3580.
3581.
3582.
3583.
3584.
3585.
3586.
3587.
3588.
3589.
3590.
3591.
3592.
3593.
3594.
3595.
3596.
3597.
3598.
3599.
3600.
3601.
3602.
3603.
3604.
3605.
3606.
3607.
3608.
3609.
3610.
3611.
3612.
3613.
3614.
3615.
3616.
3617.
3618.
3619.
3620.
3621.
3622.
3623.
3624.
3625.
3626.
3627.
3628.
3629.
3630.
3631.
3632.
3633.
3634.
3635.
3636.
3637.
3638.
3639.
3640.
3641.
3642.
3643.
3644.
3645.
3646.
3647.
3648.
3649.
3650.
3651.
3652.
3653.
3654.
3655.
3656.
3657.
3658.
3659.
3660.
3661.
3662.
3663.
3664.
3665.
3666.
3667.
3668.
3669.
3670.
3671.
3672.
3673.
3674.
3675.
3676.
3677.
3678.
3679.
3680.
3681.
3682.
3683.
3684.
3685.
3686.
3687.
3688.
3689.
3690.
3691.
3692.
3693.
3694.
3695.
3696.
3697.
3698.
3699.
3700.
3701.
3702.
3703.
3704.
3705.
3706.
3707.
3708.
3709.
3710.
3711.
3712.
3713.
3714.
3715.
3716.
3717.
3718.
3719.
3720.
3721.
3722.
3723.
3724.
3725.
3726.
3727.
3728.
3729.
3730.
3731.
3732.
3733.
3734.
3735.
3736.
3737.
3738.
3739.
3740.
3741.
3742.
3743.
3744.
3745.
3746.
3747.
3748.
3749.
3750.
3751.
3752.
3753.
3754.
3755.
3756.
3757.
3758.
3759.
3760.
3761.
3762.
3763.
3764.
3765.
3766.
3767.
3768.
3769.
3770.
3771.
3772.
3773.
3774.
3775.
3776.
3777.
3778.
3779.
3780.
3781.
3782.
3783.
3784.
3785.
3786.
3787.
3788.
3789.
3790.
3791.
3792.
3793.
3794.
3795.
3796.
3797.
3798.
3799.
3800.
3801.
3802.
3803.
3804.
3805.
3806.
3807.
3808.
3809.
3810.
3811.
3812.
3813.
3814.
3815.
3816.
3817.
3818.
3819.
3820.
3821.
3822.
3823.
3824.
3825.
3826.
3827.
3828.
3829.
3830.
3831.
3832.
3833.
3834.
3835.
3836.
3837.
3838.
3839.
3840.
3841.
3842.
3843.
3844.
3845.
3846.
3847.
3848.
3849.
3850.
3851.
3852.
3853.
3854.
3855.
3856.
3857.
3858.
3859.
3860.
3861.
3862.
3863.
3864.
3865.
3866.
3867.
3868.
3869.
3870.
3871.
3872.
3873.
3874.
3875.
3876.
3877.
3878.
3879.
3880.
3881.
3882.
3883.
3884.
3885.
3886.
3887.
3888.
3889.
3890.
3891.
3892.
3893.
3894.
3895.
3896.
3897.
3898.
3899.
3900.
3901.
3902.
3903.
3904.
3905.
3906.
3907.
3908.
3909.
3910.
3911.
3912.
3913.
3914.
3915.
3916.
3917.
3918.
3919.
3920.
3921.
3922.
3923.
3924.
3925.
3926.
3927.
3928.
3929.
3930.
3931.
3932.
3933.
3934.
3935.
3936.
3937.
3938.
3939.
3940.
3941.
3942.
3943.
3944.
3945.
3946.
3947.
3948.
3949.
3950.
3951.
3952.
3953.
3954.
3955.
3956.
3957.
3958.
3959.
3960.
3961.
3962.
3963.
3964.
3965.
3966.
3967.
3968.
3969.
3970.
3971.
3972.
3973.
3974.
3975.
3976.
3977.
3978.
3979.
3980.
3981.
3982.
3983.
3984.
3985.
3986.
3987.
3988.
3989.
3990.
3991.
3992.
3993.
3994.
3995.
3996.
3997.
3998.
3999.
4000.
4001.
4002.
4003.
4004.
4005.
4006.
4007.
4008.
4009.
4010.
4011.
4012.
4013.
4014.
4015.
4016.
4017.
4018.
4019.
4020.
4021.
4022.
4023.
4024.
4025.
4026.
4027.
4028.
4029.
4030.
4031.
4032.
4033.
4034.
4035.
4036.
4037.
4038.
4039.
4040.
4041.
4042.
4043.
4044.
4045.
4046.
4047.
4048.
4049.
4050.
4051.
4052.
4053.
4054.
4055.
4056.
4057.
4058.
4059.
4060.
4061.
4062.
4063.
4064.
4065.
4066.
4067.
4068.
4069.
4070.
4071.
4072.
4073.
4074.
4075.
4076.
4077.
4078.
4079.
4080.
4081.
4082.
4083.
4084.
4085.
4086.
4087.
4088.
4089.
4090.
4091.
4092.
4093.
4094.
4095.
4096.
4097.
4098.
4099.
4100.
4101.
4102.
4103.
4104.
4105.
4106.
4107.
4108.
4109.
4110.
4111.
4112.
4113.
4114.
4115.
4116.
4117.
4118.
4119.
4120.
4121.
4122.
4123.
4124.
4125.
4126.
4127.
4128.
4129.
4130.
4131.
4132.
4133.
4134.
4135.
4136.
4137.
4138.
4139.
4140.
4141.
4142.
4143.
4144.
4145.
4146.
4147.
4148.
4149.
4150.
4151.
4152.
4153.
4154.
4155.
4156.
4157.
4158.
4159.
4160.
4161.
4162.
4163.
4164.
4165.
4166.
4167.
4168.
4169.
4170.
4171.
4172.
4173.
4174.
4175.
4176.
4177.
4178.
4179.
4180.
4181.
4182.
4183.
4184.
4185.
4186.
4187.
4188.
4189.
4190.
4191.
4192.
4193.
4194.
4195.
4196.
4197.
4198.
4199.
4200.
4201.
4202.
4203.
4204.
4205.
4206.
4207.
4208.
4209.
4210.
4211.
4212.
4213.
4214.
4215.
4216.
4217.
4218.
4219.
4220.
4221.
4222.
4223.
4224.
4225.
4226.
4227.
4228.
4229.
4230.
4231.
4232.
4233.
4234.
4235.
4236.
4237.
4238.
4239.
4240.
4241.
4242.
4243.
4244.
4245.
4246.
4247.
4248.
4249.
4250.
4251.
4252.
4253.
4254.
4255.
4256.
4257.
4258.
4259.
4260.
4261.
4262.
4263.
4264.
4265.
4266.
4267.
4268.
4269.
4270.
4271.
4272.
4273.
4274.
4275.
4276.
4277.
4278.
4279.
4280.
4281.
4282.
4283.
4284.
4285.
4286.
4287.
4288.
4289.
4290.
4291.
4292.
4293.
4294.
4295.
4296.
4297.
4298.
4299.
4300.
4301.
4302.
4303.
4304.
4305.
4306.
4307.
4308.
4309.
4310.
4311.
4312.
4313.
4314.
4315.
4316.
4317.
4318.
4319.
4320.
4321.
4322.
4323.
4324.
4325.
4326.
4327.
4328.
4329.
4330.
4331.
4332.
4333.
4334.
4335.
4336.
4337.
4338.
4339.
4340.
4341.
4342.
4343.
4344.
4345.
4346.
4347.
4348.
4349.
4350.
4351.
4352.
4353.
4354.
4355.
4356.
4357.
4358.
4359.
4360.
4361.
4362.
4363.
4364.
4365.
4366.
4367.
4368.
4369.
4370.
4371.
4372.
4373.
4374.
4375.
4376.
4377.
4378.
4379.
4380.
4381.
4382.
4383.
4384.
4385.
4386.
4387.
4388.
4389.
4390.
4391.
4392.
4393.
4394.
4395.
4396.
4397.
4398.
4399.
4400.
4401.
4402.
4403.
4404.
4405.
4406.
4407.
4408.
4409.
4410.
4411.
4412.
4413.
4414.
4415.
4416.
4417.
4418.
4419.
4420.
4421.
4422.
4423.
4424.
4425.
4426.
4427.
4428.
4429.
4430.
4431.
4432.
4433.
4434.
4435.
4436.
4437.
4438.
4439.
4440.
4441.
4442.
4443.
4444.
4445.
4446.
4447.
4448.
4449.
4450.
4451.
4452.
4453.
4454.
4455.
4456.
4457.
4458.
4459.
4460.
4461.
4462.
4463.
4464.
4465.
4466.
4467.
4468.
4469.
4470.
4471.
4472.
4473.
4474.
4475.
4476.
4477.
4478.
4479.
4480.
4481.
4482.
4483.
4484.
4485.
4486.
4487.
4488.
4489.
4490.
4491.
4492.
4493.
4494.
4495.
4496.
4497.
4498.
4499.
4500.
4501.
4502.
4503.
4504.
4505.
4506.
4507.
4508.
4509.
4510.
4511.
4512.
4513.
4514.
4515.
4516.
4517.
4518.
4519.
4520.
4521.
4522.
4523.
4524.
4525.
4526.
4527.
4528.
4529.
4530.
4531.
4532.
4533.
4534.
4535.
4536.
4537.
4538.
4539.
4540.
4541.
4542.
4543.
4544.
4545.
4546.
4547.
4548.
4549.
4550.
4551.
4552.
4553.
4554.
4555.
4556.
4557.
4558.
4559.
4560.
4561.
4562.
4563.
4564.
4565.
4566.
4567.
4568.
4569.
4570.
4571.
4572.
4573.
4574.
4575.
4576.
4577.
4578.
4579.
4580.
4581.
4582.
4583.
4584.
4585.
4586.
4587.
4588.
4589.
4590.
4591.
4592.
4593.
4594.
4595.
4596.
4597.
4598.
4599.
4600.
4601.
4602.
4603.
4604.
4605.
4606.
4607.
4608.
4609.
4610.
4611.
4612.
4613.
4614.
4615.
4616.
4617.
4618.
4619.
4620.
4621.
4622.
4623.
4624.
4625.
4626.
4627.
4628.
4629.
4630.
4631.
4632.
4633.
4634.
4635.
4636.
4637.
4638.
4639.
4640.
4641.
4642.
4643.
4644.
4645.
4646.
4647.
4648.
4649.
4650.
4651.
4652.
4653.
4654.
4655.
4656.
4657.
4658.
4659.
4660.
4661.
4662.
4663.
4664.
4665.
4666.
4667.
4668.
4669.
4670.
4671.
4672.
4673.
4674.
4675.
4676.
4677.
4678.
4679.
4680.
4681.
4682.
4683.
4684.
4685.
4686.
4687.
4688.
4689.
4690.
4691.
4692.
4693.
4694.
4695.
4696.
4697.
4698.
4699.
4700.
4701.
4702.
4703.
4704.
4705.
4706.
4707.
4708.
4709.
4710.
4711.
4712.
4713.
4714.
4715.
4716.
4717.
4718.
4719.
4720.
4721.
4722.
4723.
4724.
4725.
4726.
4727.
4728.
4729.
4730.
4731.
4732.
4733.
4734.
4735.
4736.
4737.
4738.
4739.
4740.
4741.
4742.
4743.
4744.
4745.
4746.
4747.
4748.
4749.
4750.
4751.
4752.
4753.
4754.
4755.
4756.
4757.
4758.
4759.
4760.
4761.
4762.
4763.
4764.
4765.
4766.
4767.
4768.
4769.
4770.
4771.
4772.
4773.
4774.
4775.
4776.
4777.
4778.
4779.
4780.
4781.
4782.
4783.
4784.
4785.
4786.
4787.
4788.
4789.
4790.
4791.
4792.
4793.
4794.
4795.
4796.
4797.
4798.
4799.
4800.
4801.
4802.
4803.
4804.
4805.
4806.
4807.
4808.
4809.
4810.
4811.
4812.
4813.
4814.
4815.
4816.
4817.
4818.
4819.
4820.
4821.
4822.
4823.
4824.
4825.
4826.
4827.
4828.
4829.
4830.
4831.
4832.
4833.
4834.
4835.
4836.
4837.
4838.
4839.
4840.
4841.
4842.
4843.
4844.
4845.
4846.
4847.
4848.
4849.
4850.
4851.
4852.
4853.
4854.
4855.
4856.
4857.
4858.
4859.
4860.
4861.
4862.
4863.
4864.
4865.
4866.
4867.
4868.
4869.
4870.
4871.
4872.
4873.
4874.
4875.
4876.
4877.
4878.
4879.
4880.
4881.
4882.
4883.
4884.
4885.
4886.
4887.
4888.
4889.
4890.
4891.
4892.
4893.
4894.
4895.
4896.
4897.
4898.
4899.
4900.
4901.
4902.
4903.
4904.
4905.
4906.
4907.
4908.
4909.
4910.
4911.
4912.
4913.
4914.
4915.
4916.
4917.
4918.
4919.
4920.
4921.
4922.
4923.
4924.
4925.
4926.
4927.
4928.
4929.
4930.
4931.
4932.
4933.
4934.
4935.
4936.
4937.
4938.
4939.
4940.
4941.
4942.
4943.
4944.
4945.
4946.
4947.
4948.
4949.
4950.
4951.
4952.
4953.
4954.
4955.
4956.
4957.
4958.
4959.
4960.
4961.
4962.
4963.
4964.
4965.
4966.
4967.
4968.
4969.
4970.
4971.
4972.
4973.
4974.
4975.
4976.
4977.
4978.
4979.
4980.
4981.
4982.
4983.
4984.
4985.
4986.
4987.
4988.
4989.
4990.
4991.
4992.
4993.
4994.
4995.
4996.
4997.
4998.
4999.
5000.
5001.
5002.
5003.
5004.
5005.
5006.
5007.
5008.
5009.
5010.
5011.
5012.
5013.
5014.
5015.
5016.
5017.
5018.
5019.
5020.
5021.
5022.
5023.
5024.
5025.
5026.
5027.
5028.
5029.
5030.
5031.
5032.
5033.
5034.
5035.
5036.
5037.
5038.
5039.
5040.
5041.
5042.
5043.
5044.
5045.
5046.
5047.
5048.
5049.
5050.
5051.
5052.
5053.
5054.
5055.
5056.
5057.
5058.
5059.
5060.
5061.
5062.
5063.
5064.
5065.
5066.
5067.
5068.
5069.
5070.
5071.
5072.
5073.
5074.
5075.
5076.
5077.
5078.
5079.
5080.
5081.
5082.
5083.
5084.
5085.
5086.
5087.
5088.
5089.
5090.
5091.
5092.
5093.
5094.
5095.
5096.
5097.
5098.
5099.
5100.
5101.
5102.
5103.
5104.
5105.
5106.
5107.
5108.
5109.
5110.
5111.
5112.
5113.
5114.
5115.
5116.
5117.
5118.
5119.
5120.
5121.
5122.
5123.
5124.
5125.
5126.
5127.
5128.
5129.
5130.
5131.
5132.
5133.
5134.
5135.
5136.
5137.
5138.
5139.
5140.
5141.
5142.
5143.
5144.
5145.
5146.
5147.
5148.
5149.
5150.
5151.
5152.
5153.
5154.
5155.
5156.
5157.
5158.
5159.
5160.
5161.
5162.
5163.
5164.
5165.
5166.
5167.
5168.
5169.
5170.
5171.
5172.
5173.
5174.
5175.
5176.
5177.
5178.
5179.
5180.
5181.
5182.
5183.
5184.
5185.
5186.
5187.
5188.
5189.
5190.
5191.
5192.
5193.
5194.
5195.
5196.
5197.
5198.
5199.
5200.
5201.
5202.
5203.
5204.
5205.
5206.
5207.
5208.
5209.
5210.
5211.
5212.
5213.
5214.
5215.
5216.
5217.
5218.
5219.
5220.
5221.
5222.
5223.
5224.
5225.
5226.
5227.
5228.
5229.
5230.
5231.
5232.
5233.
5234.
5235.
5236.
5237.
5238.
5239.
5240.
5241.
5242.
5243.
5244.
5245.
5246.
5247.
5248.
5249.
5250.
5251.
5252.
5253.
5254.
5255.
5256.
5257.
5258.
5259.
5260.
5261.
5262.
5263.
5264.
5265.
5266.
5267.
5268.
5269.
5270.
5271.
5272.
5273.
5274.
5275.
5276.
5277.
5278.
5279.
5280.
5281.
5282.
5283.
5284.
5285.
5286.
5287.
5288.
5289.
5290.
5291.
5292.
5293.
5294.
5295.
5296.
5297.
5298.
5299.
5300.
5301.
5302.
5303.
5304.
5305.
5306.
5307.
5308.
5309.
5310.
5311.
5312.
5313.
5314.
5315.
5316.
5317.
5318.
5319.
5320.
5321.
5322.
5323.
5324.
5325.
5326.
5327.
5328.
5329.
5330.
5331.
5332.
5333.
5334.
5335.
5336.
5337.
5338.
5339.
5340.
5341.
5342.
5343.
5344.
5345.
5346.
5347.
5348.
5349.
5350.
5351.
5352.
5353.
5354.
5355.
5356.
5357.
5358.
5359.
5360.
5361.
5362.
5363.
5364.
5365.
5366.
5367.
5368.
5369.
5370.
5371.
5372.
5373.
5374.
5375.
5376.
5377.
5378.
5379.
5380.
5381.
5382.
5383.
5384.
5385.
5386.
5387.
5388.
5389.
5390.
5391.
5392.
5393.
5394.
5395.
5396.
5397.
5398.
5399.
5400.
5401.
5402.
5403.
5404.
5405.
5406.
5407.
5408.
5409.
5410.
5411.
5412.
5413.
5414.
5415.
5416.
5417.
5418.
5419.
5420.
5421.
5422.
5423.
5424.
5425.
5426.
5427.
5428.
5429.
5430.
5431.
5432.
5433.
5434.
5435.
5436.
5437.
5438.
5439.
5440.
5441.
5442.
5443.
5444.
5445.
5446.
5447.
5448.
5449.
5450.
5451.
5452.
5453.
5454.
5455.
5456.
5457.
5458.
5459.
5460.
5461.
5462.
5463.
5464.
5465.
5466.
5467.
5468.
5469.
5470.
5471.
5472.
5473.
5474.
5475.
5476.
5477.
5478.
5479.
5480.
5481.
5482.
5483.
5484.
5485.
5486.
5487.
5488.
5489.
5490.
5491.
5492.
5493.
5494.
5495.
5496.
5497.
5498.
5499.
5500.
5501.
5502.
5503.
5504.
5505.
5506.
5507.
5508.
5509.
5510.
5511.
5512.
5513.
5514.
5515.
5516.
5517.
5518.
5519.
5520.
5521.
5522.
5523.
5524.
5525.
5526.
5527.
5528.
5529.
5530.
5531.
5532.
5533.
5534.
5535.
5536.
5537.
5538.
5539.
5540.
5541.
5542.
5543.
5544.
5545.
5546.
5547.
5548.
5549.
5550.
5551.
5552.
5553.
5554.
5555.
5556.
5557.
5558.
5559.
5560.
5561.
5562.
5563.
5564.
5565.
5566.
5567.
5568.
5569.
5570.
5571.
5572.
5573.
5574.
5575.
5576.
5577.
5578.
5579.
5580.
5581.
5582.
5583.
5584.
5585.
5586.
5587.
5588.
5589.
5590.
5591.
5592.
5593.
5594.
5595.
5596.
5597.
5598.
5599.
5600.
5601.
5602.
5603.
5604.
5605.
5606.
5607.
5608.
5609.
5610.
5611.
5612.
5613.
5614.
5615.
5616.
5617.
5618.
5619.
5620.
5621.
5622.
5623.
5624.
5625.
5626.
5627.
5628.
5629.
5630.
5631.
5632.
5633.
5634.
5635.
5636.
5637.
5638.
5639.
5640.
5641.
5642.
5643.
5644.
5645.
5646.
5647.
5648.
5649.
5650.
5651.
5652.
5653.
5654.
5655.
5656.
5657.
5658.
5659.
5660.
5661.
5662.
5663.
5664.
5665.
5666.
5667.
5668.
5669.
5670.
5671.
5672.
5673.
5674.
5675.
5676.
5677.
5678.
5679.
5680.
5681.
5682.
5683.
5684.
5685.
5686.
5687.
5688.
5689.
5690.
5691.
5692.
5693.
5694.
5695.
5696.
5697.
5698.
5699.
5700.
5701.
5702.
5703.
5704.
5705.
5706.
5707.
5708.
5709.
5710.
5711.
5712.
5713.
5714.
5715.
5716.
5717.
5718.
5719.
5720.
5721.
5722.
5723.
5724.
5725.
5726.
5727.
5728.
5729.
5730.
5731.
5732.
5733.
5734.
5735.
5736.
5737.
5738.
5739.
5740.
5741.
5742.
5743.
5744.
5745.
5746.
5747.
5748.
5749.
5750.
5751.
5752.
5753.
5754.
5755.
5756.
5757.
5758.
5759.
5760.
5761.
5762.
5763.
5764.
5765.
5766.
5767.
5768.
5769.
5770.
5771.
5772.
5773.
5774.
5775.
5776.
5777.
5778.
5779.
5780.
5781.
5782.
5783.
5784.
5785.
5786.
5787.
5788.
5789.
5790.
5791.
5792.
5793.
5794.
5795.
5796.
5797.
5798.
5799.
5800.
5801.
5802.
5803.
5804.
5805.
5806.
5807.
5808.
5809.
5810.
5811.
5812.
5813.
5814.
5815.
5816.
5817.
5818.
5819.
5820.
5821.
5822.
5823.
5824.
5825.
5826.
5827.
5828.
5829.
5830.
5831.
5832.
5833.
5834.
5835.
5836.
5837.
5838.
5839.
5840.
5841.
5842.
5843.
5844.
5845.
5846.
5847.
5848.
5849.
5850.
5851.
5852.
5853.
5854.
5855.
5856.
5857.
5858.
5859.
5860.
5861.
5862.
5863.
5864.
5865.
5866.
5867.
5868.
5869.
5870.
5871.
5872.
5873.
5874.
5875.
5876.
5877.
5878.
5879.
5880.
5881.
5882.
5883.
5884.
5885.
5886.
5887.
5888.
5889.
5890.
5891.
5892.
5893.
5894.
5895.
5896.
5897.
5898.
5899.
5900.
5901.
5902.
5903.
5904.
5905.
5906.
5907.
5908.
5909.
5910.
5911.
5912.
5913.
5914.
5915.
5916.
5917.
5918.
5919.
5920.
5921.
5922.
5923.
5924.
5925.
5926.
5927.
5928.
5929.
5930.
5931.
5932.
5933.
5934.
5935.
5936.
5937.
5938.
5939.
5940.
5941.
5942.
5943.
5944.
5945.
5946.
5947.
5948.
5949.
5950.
5951.
5952.
5953.
5954.
5955.
5956.
5957.
5958.
5959.
5960.
5961.
5962.
5963.
5964.
5965.
5966.
5967.
5968.
5969.
5970.
5971.
5972.
5973.
5974.
5975.
5976.
5977.
5978.
5979.
5980.
5981.
5982.
5983.
5984.
5985.
5986.
5987.
5988.
5989.
5990.
5991.
5992.
5993.
5994.
5995.
5996.
5997.
5998.
5999.
6000.
6001.
6002.
6003.
6004.
6005.
6006.
6007.
6008.
6009.
6010.
6011.
6012.
6013.
6014.
6015.
6016.
6017.
6018.
6019.
6020.
6021.
6022.
6023.
6024.
6025.
6026.
6027.
6028.
6029.
6030.
6031.
6032.
6033.
6034.
6035.
6036.
6037.
6038.
6039.
6040.
6041.
6042.
6043.
6044.
6045.
6046.
6047.
6048.
6049.
6050.
6051.
6052.
6053.
6054.
6055.
6056.
6057.
6058.
6059.
6060.
6061.
6062.
6063.
6064.
6065.
6066.
6067.
6068.
6069.
6070.
6071.
6072.
6073.
6074.
6075.
6076.
6077.
6078.
6079.
6080.
6081.
6082.
6083.
6084.
6085.
6086.
6087.
6088.
6089.
6090.
6091.
6092.
6093.
6094.
6095.
6096.
6097.
6098.
6099.
6100.
6101.
6102.
6103.
6104.
6105.
6106.
6107.
6108.
6109.
6110.
6111.
6112.
6113.
6114.
6115.
6116.
6117.
6118.
6119.
6120.
6121.
6122.
6123.
6124.
6125.
6126.
6127.
6128.
6129.
6130.
6131.
6132.
6133.
6134.
6135.
6136.
6137.
6138.
6139.
6140.
6141.
6142.
6143.
6144.
6145.
6146.
6147.
6148.
6149.
6150.
6151.
6152.
6153.
6154.
6155.
6156.
6157.
6158.
6159.
6160.
6161.
6162.
6163.
6164.
6165.
6166.
6167.
6168.
6169.
6170.
6171.
6172.
6173.
6174.
6175.
6176.
6177.
6178.
6179.
6180.
6181.
6182.
6183.
6184.
6185.
6186.
6187.
6188.
6189.
6190.
6191.
6192.
6193.
6194.
6195.
6196.
6197.
6198.
6199.
6200.
6201.
6202.
6203.
6204.
6205.
6206.
6207.
6208.
6209.
6210.
6211.
6212.
6213.
6214.
6215.
6216.
6217.
6218.
6219.
6220.
6221.
6222.
6223.
6224.
6225.
6226.
6227.
6228.
6229.
6230.
6231.
6232.
6233.
6234.
6235.
6236.
6237.
6238.
6239.
6240.
6241.
6242.
6243.
6244.
6245.
6246.
6247.
6248.
6249.
6250.
6251.
6252.
6253.
6254.
6255.
6256.
6257.
6258.
6259.
6260.
6261.
6262.
6263.
6264.
6265.
6266.
6267.
6268.
6269.
6270.
6271.
6272.
6273.
6274.
6275.
6276.
6277.
6278.
6279.
6280.
6281.
6282.
6283.
6284.
6285.
6286.
6287.
6288.
6289.
6290.
6291.
6292.
6293.
6294.
6295.
6296.
6297.
6298.
6299.
6300.
6301.
6302.
6303.
6304.
6305.
6306.
6307.
6308.
6309.
6310.
6311.
6312.
6313.
6314.
6315.
6316.
6317.
6318.
6319.
6320.
6321.
6322.
6323.
6324.
6325.
6326.
6327.
6328.
6329.
6330.
6331.
6332.
6333.
6334.
6335.
6336.
6337.
6338.
6339.
6340.
6341.
6342.
6343.
6344.
6345.
6346.
6347.
6348.
6349.
6350.
6351.
6352.
6353.
6354.
6355.
6356.
6357.
6358.
6359.
6360.
6361.
6362.
6363.
6364.
6365.
6366.
6367.
6368.
6369.
6370.
6371.
6372.
6373.
6374.
6375.
6376.
6377.
6378.
6379.
6380.
6381.
6382.
6383.
6384.
6385.
6386.
6387.
6388.
6389.
6390.
6391.
6392.
6393.
6394.
6395.
6396.
6397.
6398.
6399.
6400.
6401.
6402.
6403.
6404.
6405.
6406.
6407.
6408.
6409.
6410.
6411.
6412.
6413.
6414.
6415.
6416.
6417.
6418.
6419.
6420.
6421.
6422.
6423.
6424.
6425.
6426.
6427.
6428.
6429.
6430.
6431.
6432.
6433.
6434.
6435.
6436.
6437.
6438.
6439.
6440.
6441.
6442.
6443.
6444.
6445.
6446.
6447.
6448.
6449.
6450.
6451.
6452.
6453.
6454.
6455.
6456.
6457.
6458.
6459.
6460.
6461.
6462.
6463.
6464.
6465.
6466.
6467.
6468.
6469.
6470.
6471.
6472.
6473.
6474.
6475.
6476.
6477.
6478.
6479.
6480.
6481.
6482.
6483.
6484.
6485.
6486.
6487.
6488.
6489.
6490.
6491.
6492.
6493.
6494.
6495.
6496.
6497.
6498.
6499.
6500.
6501.
6502.
6503.
6504.
6505.
6506.
6507.
6508.
6509.
6510.
6511.
6512.
6513.
6514.
6515.
6516.
6517.
6518.
6519.
6520.
6521.
6522.
6523.
6524.
6525.
6526.
6527.
6528.
6529.
6530.
6531.
6532.
6533.
6534.
6535.
6536.
6537.
6538.
6539.
6540.
6541.
6542.
6543.
6544.
6545.
6546.
6547.
6548.
6549.
6550.
6551.
6552.
6553.
6554.
6555.
6556.
6557.
6558.
6559.
6560.
6561.
6562.
6563.
6564.
6565.
6566.
6567.
6568.
6569.
6570.
6571.
6572.
6573.
6574.
6575.
6576.
6577.
6578.
6579.
6580.
6581.
6582.
6583.
6584.
6585.
6586.
6587.
6588.
6589.
6590.
6591.
6592.
6593.
6594.
6595.
6596.
6597.
6598.
6599.
6600.
6601.
6602.
6603.
6604.
6605.
6606.
6607.
6608.
6609.
6610.
6611.
6612.
6613.
6614.
6615.
6616.
6617.
6618.
6619.
6620.
6621.
6622.
6623.
6624.
6625.
6626.
6627.
6628.
6629.
6630.
6631.
6632.
6633.
6634.
6635.
6636.
6637.
6638.
6639.
6640.
6641.
6642.
6643.
6644.
6645.
6646.
6647.
6648.
6649.
6650.
6651.
6652.
6653.
6654.
6655.
6656.
6657.
6658.
6659.
6660.
6661.
6662.
6663.
6664.
6665.
6666.
6667.
6668.
6669.
6670.
6671.
6672.
6673.
6674.
6675.
6676.
6677.
6678.
6679.
6680.
6681.
6682.
6683.
6684.
6685.
6686.
6687.
6688.
6689.
6690.
6691.
6692.
6693.
6694.
6695.
6696.
6697.
6698.
6699.
6700.
6701.
6702.
6703.
6704.
6705.
6706.
6707.
6708.
6709.
6710.
6711.
6712.
6713.
6714.
6715.
6716.
6717.
6718.
6719.
6720.
6721.
6722.
6723.
6724.
6725.
6726.
6727.
6728.
6729.
6730.
6731.
6732.
6733.
6734.
6735.
6736.
6737.
6738.
6739.
6740.
6741.
6742.
6743.
6744.
6745.
6746.
6747.
6748.
6749.
6750.
6751.
6752.
6753.
6754.
6755.
6756.
6757.
6758.
6759.
6760.
6761.
6762.
6763.
6764.
6765.
6766.
6767.
6768.
6769.
6770.
6771.
6772.
6773.
6774.
6775.
6776.
6777.
6778.
6779.
6780.
6781.
6782.
6783.
6784.
6785.
6786.
6787.
6788.
6789.
6790.
6791.
6792.
6793.
6794.
6795.
6796.
6797.
6798.
6799.
6800.
6801.
6802.
6803.
6804.
6805.
6806.
6807.
6808.
6809.
6810.
6811.
6812.
6813.
6814.
6815.
6816.
6817.
6818.
6819.
6820.
6821.
6822.
6823.
6824.
6825.
6826.
6827.
6828.
6829.
6830.
6831.
6832.
6833.
6834.
6835.
6836.
6837.
6838.
6839.
6840.
6841.
6842.
6843.
6844.
6845.
6846.
6847.
6848.
6849.
6850.
6851.
6852.
6853.
6854.
6855.
6856.
6857.
6858.
6859.
6860.
6861.
6862.
6863.
6864.
6865.
6866.
6867.
6868.
6869.
6870.
6871.
6872.
6873.
6874.
6875.
6876.
6877.
6878.
6879.
6880.
6881.
6882.
6883.
6884.
6885.
6886.
6887.
6888.
6889.
6890.
6891.
6892.
6893.
6894.
6895.
6896.
6897.
6898.
6899.
6900.
6901.
6902.
6903.
6904.
6905.
6906.
6907.
6908.
6909.
6910.
6911.
6912.
6913.
6914.
6915.
6916.
6917.
6918.
6919.
6920.
6921.
6922.
6923.
6924.
6925.
6926.
6927.
6928.
6929.
6930.
6931.
6932.
6933.
6934.
6935.
6936.
6937.
6938.
6939.
6940.
6941.
6942.
6943.
6944.
6945.
6946.
6947.
6948.
6949.
6950.
6951.
6952.
6953.
6954.
6955.
6956.
6957.
6958.
6959.
6960.
6961.
6962.
6963.
6964.
6965.
6966.
6967.
6968.
6969.
6970.
6971.
6972.
6973.
6974.
6975.
6976.
6977.
6978.
6979.
6980.
6981.
6982.
6983.
6984.
6985.
6986.
6987.
6988.
6989.
6990.
6991.
6992.
6993.
6994.
6995.
6996.
6997.
6998.
6999.
7000.
7001.
7002.
7003.
7004.
7005.
7006.
7007.
7008.
7009.
7010.
7011.
7012.
7013.
7014.
7015.
7016.
7017.
7018.
7019.
7020.
7021.
7022.
7023.
7024.
7025.
7026.
7027.
7028.
7029.
7030.
7031.
7032.
7033.
7034.
7035.
7036.
7037.
7038.
7039.
7040.
7041.
7042.
7043.
7044.
7045.
7046.
7047.
7048.
7049.
7050.
7051.
7052.
7053.
7054.
7055.
7056.
7057.
7058.
7059.
7060.
7061.
7062.
7063.
7064.
7065.
7066.
7067.
7068.
7069.
7070.
7071.
7072.
7073.
7074.
7075.
7076.
7077.
7078.
7079.
7080.
7081.
7082.
7083.
7084.
7085.
7086.
7087.
7088.
7089.
7090.
7091.
7092.
7093.
7094.
7095.
7096.
7097.
7098.
7099.
7100.
7101.
7102.
7103.
7104.
7105.
7106.
7107.
7108.
7109.
7110.
7111.
7112.
7113.
7114.
7115.
7116.
7117.
7118.
7119.
7120.
7121.
7122.
7123.
7124.
7125.
7126.
7127.
7128.
7129.
7130.
7131.
7132.
7133.
7134.
7135.
7136.
7137.
7138.
7139.
7140.
7141.
7142.
7143.
7144.
7145.
7146.
7147.
7148.
7149.
7150.
7151.
7152.
7153.
7154.
7155.
7156.
7157.
7158.
7159.
7160.
7161.
7162.
7163.
7164.
7165.
7166.
7167.
7168.
7169.
7170.
7171.
7172.
7173.
7174.
7175.
7176.
7177.
7178.
7179.
7180.
7181.
7182.
7183.
7184.
7185.
7186.
7187.
7188.
7189.
7190.
7191.
7192.
7193.
7194.
7195.
7196.
7197.
7198.
7199.
7200.
7201.
7202.
7203.
7204.
7205.
7206.
7207.
7208.
7209.
7210.
7211.
7212.
7213.
7214.
7215.
7216.
7217.
7218.
7219.
7220.
7221.
7222.
7223.
7224.
7225.
7226.
7227.
7228.
7229.
7230.
7231.
7232.
7233.
7234.
7235.
7236.
7237.
7238.
7239.
7240.
7241.
7242.
7243.
7244.
7245.
7246.
7247.
7248.
7249.
7250.
7251.
7252.
7253.
7254.
7255.
7256.
7257.
7258.
7259.
7260.
7261.
7262.
7263.
7264.
7265.
7266.
7267.
7268.
7269.
7270.
7271.
7272.
7273.
7274.
7275.
7276.
7277.
7278.
7279.
7280.
7281.
7282.
7283.
7284.
7285.
7286.
7287.
7288.
7289.
7290.
7291.
7292.
7293.
7294.
7295.
7296.
7297.
7298.
7299.
7300.
7301.
7302.
7303.
7304.
7305.
7306.
7307.
7308.
7309.
7310.
7311.
7312.
7313.
7314.
7315.
7316.
7317.
7318.
7319.
7320.
7321.
7322.
7323.
7324.
7325.
7326.
7327.
7328.
7329.
7330.
7331.
7332.
7333.
7334.
7335.
7336.
7337.
7338.
7339.
7340.
7341.
7342.
7343.
7344.
7345.
7346.
7347.
7348.
7349.
7350.
7351.
7352.
7353.
7354.
7355.
7356.
7357.
7358.
7359.
7360.
7361.
7362.
7363.
7364.
7365.
7366.
7367.
7368.
7369.
7370.
7371.
7372.
7373.
7374.
7375.
7376.
7377.
7378.
7379.
7380.
7381.
7382.
7383.
7384.
7385.
7386.
7387.
7388.
7389.
7390.
7391.
7392.
7393.
7394.
7395.
7396.
7397.
7398.
7399.
7400.
7401.
7402.
7403.
7404.
7405.
7406.
7407.
7408.
7409.
7410.
7411.
7412.
7413.
7414.
7415.
7416.
7417.
7418.
7419.
7420.
7421.
7422.
7423.
7424.
7425.
7426.
7427.
7428.
7429.
7430.
7431.
7432.
7433.
7434.
7435.
7436.
7437.
7438.
7439.
7440.
7441.
7442.
7443.
7444.
7445.
7446.
7447.
7448.
7449.
7450.
7451.
7452.
7453.
7454.
7455.
7456.
7457.
7458.
7459.
7460.
7461.
7462.
7463.
7464.
7465.
7466.
7467.
7468.
7469.
7470.
7471.
7472.
7473.
7474.
7475.
7476.
7477.
7478.
7479.
7480.
7481.
7482.
7483.
7484.
7485.
7486.
7487.
7488.
7489.
7490.
7491.
7492.
7493.
7494.
7495.
7496.
7497.
7498.
7499.
7500.
7501.
7502.
7503.
7504.
7505.
7506.
7507.
7508.
7509.
7510.
7511.
7512.
7513.
7514.
7515.
7516.
7517.
7518.
7519.
7520.
7521.
7522.
7523.
7524.
7525.
7526.
7527.
7528.
7529.
7530.
7531.
7532.
7533.
7534.
7535.
7536.
7537.
7538.
7539.
7540.
7541.
7542.
7543.
7544.
7545.
7546.
7547.
7548.
7549.
7550.
7551.
7552.
7553.
7554.
7555.
7556.
7557.
7558.
7559.
7560.
7561.
7562.
7563.
7564.
7565.
7566.
7567.
7568.
7569.
7570.
7571.
7572.
7573.
7574.
7575.
7576.
7577.
7578.
7579.
7580.
7581.
7582.
7583.
7584.
7585.
7586.
7587.
7588.
7589.
7590.
7591.
7592.
7593.
7594.
7595.
7596.
7597.
7598.
7599.
7600.
7601.
7602.
7603.
7604.
7605.
7606.
7607.
7608.
7609.
7610.
7611.
7612.
7613.
7614.
7615.
7616.
7617.
7618.
7619.
7620.
7621.
7622.
7623.
7624.
7625.
7626.
7627.
7628.
7629.
7630.
7631.
7632.
7633.
7634.
7635.
7636.
7637.
7638.
7639.
7640.
7641.
7642.
7643.
7644.
7645.
7646.
7647.
7648.
7649.
7650.
7651.
7652.
7653.
7654.
7655.
7656.
7657.
7658.
7659.
7660.
7661.
7662.
7663.
7664.
7665.
7666.
7667.
7668.
7669.
7670.
7671.
7672.
7673.
7674.
7675.
7676.
7677.
7678.
7679.
7680.
7681.
7682.
7683.
7684.
7685.
7686.
7687.
7688.
7689.
7690.
7691.
7692.
7693.
7694.
7695.
7696.
7697.
7698.
7699.
7700.
7701.
7702.
7703.
7704.
7705.
7706.
7707.
7708.
7709.
7710.
7711.
7712.
7713.
7714.
7715.
7716.
7717.
7718.
7719.
7720.
7721.
7722.
7723.
7724.
7725.
7726.
7727.
7728.
7729.
7730.
7731.
7732.
7733.
7734.
7735.
7736.
7737.
7738.
7739.
7740.
7741.
7742.
7743.
7744.
7745.
7746.
7747.
7748.
7749.
7750.
7751.
7752.
7753.
7754.
7755.
7756.
7757.
7758.
7759.
7760.
7761.
7762.
7763.
7764.
7765.
7766.
7767.
7768.
7769.
7770.
7771.
7772.
7773.
7774.
7775.
7776.
7777.
7778.
7779.
7780.
7781.
7782.
7783.
7784.
7785.
7786.
7787.
7788.
7789.
7790.
7791.
7792.
7793.
7794.
7795.
7796.
7797.
7798.
7799.
7800.
7801.
7802.
7803.
7804.
7805.
7806.
7807.
7808.
7809.
7810.
7811.
7812.
7813.
7814.
7815.
7816.
7817.
7818.
7819.
7820.
7821.
7822.
7823.
7824.
7825.
7826.
7827.
7828.
7829.
7830.
7831.
7832.
7833.
7834.
7835.
7836.
7837.
7838.
7839.
7840.
7841.
7842.
7843.
7844.
7845.
7846.
7847.
7848.
7849.
7850.
7851.
7852.
7853.
7854.
7855.
7856.
7857.
7858.
7859.
7860.
7861.
7862.
7863.
7864.
7865.
7866.
7867.
7868.
7869.
7870.
7871.
7872.
7873.
7874.
7875.
7876.
7877.
7878.
7879.
7880.
7881.
7882.
7883.
7884.
7885.
7886.
7887.
7888.
7889.
7890.
7891.
7892.
7893.
7894.
7895.
7896.
7897.
7898.
7899.
7900.
7901.
7902.
7903.
7904.
7905.
7906.
7907.
7908.
7909.
7910.
7911.
7912.
7913.
7914.
7915.
7916.
7917.
7918.
7919.
7920.
7921.
7922.
7923.
7924.
7925.
7926.
7927.
7928.
7929.
7930.
7931.
7932.
7933.
7934.
7935.
7936.
7937.
7938.
7939.
7940.
7941.
7942.
7943.
7944.
7945.
7946.
7947.
7948.
7949.
7950.
7951.
7952.
7953.
7954.
7955.
7956.
7957.
7958.
7959.
7960.
7961.
7962.
7963.
7964.
7965.
7966.
7967.
7968.
7969.
7970.
7971.
7972.
7973.
7974.
7975.
7976.
7977.
7978.
7979.
7980.
7981.
7982.
7983.
7984.
7985.
7986.
7987.
7988.
7989.
7990.
7991.
7992.
7993.
7994.
7995.
7996.
7997.
7998.
7999.
8000.
8001.
8002.
8003.
8004.
8005.
8006.
8007.
8008.
8009.
8010.
8011.
8012.
8013.
8014.
8015.
8016.
8017.
8018.
8019.
8020.
8021.
8022.
8023.
8024.
8025.
8026.
8027.
8028.
8029.
8030.
8031.
8032.
8033.
8034.
8035.
8036.
8037.
8038.
8039.
8040.
8041.
8042.
8043.
8044.
8045.
8046.
8047.
8048.
8049.
8050.
8051.
8052.
8053.
8054.
8055.
8056.
8057.
8058.
8059.
8060.
8061.
8062.
8063.
8064.
8065.
8066.
8067.
8068.
8069.
8070.
8071.
8072.
8073.
8074.
8075.
8076.
8077.
8078.
8079.
8080.
8081.
8082.
8083.
8084.
8085.
8086.
8087.
8088.
8089.
8090.
8091.
8092.
8093.
8094.
8095.
8096.
8097.
8098.
8099.
8100.
8101.
8102.
8103.
8104.
8105.
8106.
8107.
8108.
8109.
8110.
8111.
8112.
8113.
8114.
8115.
8116.
8117.
8118.
8119.
8120.
8121.
8122.
8123.
8124.
8125.
8126.
8127.
8128.
8129.
8130.
8131.
8132.
8133.
8134.
8135.
8136.
8137.
8138.
8139.
8140.
8141.
8142.
8143.
8144.
8145.
8146.
8147.
8148.
8149.
8150.
8151.
8152.
8153.
8154.
8155.
8156.
8157.
8158.
8159.
8160.
8161.
8162.
8163.
8164.
8165.
8166.
8167.
8168.
8169.
8170.
8171.
8172.
8173.
8174.
8175.
8176.
8177.
8178.
8179.
8180.
8181.
8182.
8183.
8184.
8185.
8186.
8187.
8188.
8189.
8190.
8191.
8192.
8193.
8194.
8195.
8196.
8197.
8198.
8199.
8200.
8201.
8202.
8203.
8204.
8205.
8206.
8207.
8208.
8209.
8210.
8211.
8212.
8213.
8214.
8215.
8216.
8217.
8218.
8219.
8220.
8221.
8222.
8223.
8224.
8225.
8226.
8227.
8228.
8229.
8230.
8231.
8232.
8233.
8234.
8235.
8236.
8237.
8238.
8239.
8240.
8241.
8242.
8243.
8244.
8245.
8246.
8247.
8248.
8249.
8250.
8251.
8252.
8253.
8254.
8255.
8256.
8257.
8258.
8259.
8260.
8261.
8262.
8263.
8264.
8265.
8266.
8267.
8268.
8269.
8270.
8271.
8272.
8273.
8274.
8275.
8276.
8277.
8278.
8279.
8280.
8281.
8282.
8283.
8284.
8285.
8286.
8287.
8288.
8289.
8290.
8291.
8292.
8293.
8294.
8295.
8296.
8297.
8298.
8299.
8300.
8301.
8302.
8303.
8304.
8305.
8306.
8307.
8308.
8309.
8310.
8311.
8312.
8313.
8314.
8315.
8316.
8317.
8318.
8319.
8320.
8321.
8322.
8323.
8324.
8325.
8326.
8327.
8328.
8329.
8330.
8331.
8332.
8333.
8334.
8335.
8336.
8337.
8338.
8339.
8340.
8341.
8342.
8343.
8344.
8345.
8346.
8347.
8348.
8349.
8350.
8351.
8352.
8353.
8354.
8355.
8356.
8357.
8358.
8359.
8360.
8361.
8362.
8363.
8364.
8365.
8366.
8367.
8368.
8369.
8370.
8371.
8372.
8373.
8374.
8375.
8376.
8377.
8378.
8379.
8380.
8381.
 
 
new Basepath[128]	//Path from Cstrike base directory
 
#include <amxmodx>
#include <amxmisc>
 
#include <engine>
#include <fakemeta> 
#include <cstrike>
 
#include <fun>
#include <fakemeta_util>
#include <sqlx>
#include <csx> 
 
 
#define RESTORETIME 30.0	 //How long from server start can players still get their item trasferred (s)
#define MAX 32			 //Max number of valid player entities
 
//#define CHEAT 1		 //Cheat for testing purposes
#define CS_PLAYER_HEIGHT 72.0
#define GLOBAL_COOLDOWN 0.5
#define TASK_GREET 240
#define TASK_HUD 120
#define TASK_HOOK 360
#define MAX_PLAYERS 32
#define BASE_SPEED 	245.0
#define GLUTON 95841
new Float:agi=BASE_SPEED
new round_status
new DemageTake[33]
new DemageTake1[33]
//new weapon, clip, ammo
#define x 0
#define y 1
#define z 2
 
#define TASK_CHARGE 100
#define TASK_NAME 48424
#define TASK_FLASH_LIGHT 81184
 
#define TASKID_REVIVE 	1337
#define TASKID_RESPAWN 	1338
#define TASKID_CHECKRE 	1339
#define TASKID_CHECKST 	13310
#define TASKID_ORIGIN 	13311
#define TASKID_SETUSER 	13312
 
#define pev_zorigin	pev_fuser4
#define seconds(%1) ((1<<12) * (%1))
 
#define OFFSET_CAN_LONGJUMP    356
 
#define MAX_FLASH 15		//pojemnosc barejii maga (sekund)
 
new SOUND_START[] 	= "items/medshot4.wav"
new SOUND_FINISHED[] 	= "items/smallmedkit2.wav"
new SOUND_FAILED[] 	= "items/medshotno1.wav"
new SOUND_EQUIP[]	= "items/ammopickup2.wav"
 
enum
{
	ICON_HIDE = 0,
	ICON_SHOW,
	ICON_FLASH
}
 
new g_haskit[MAX+1]
new Float:g_revive_delay[MAX+1]
new Float:g_body_origin[MAX+1][3]
new bool:g_wasducking[MAX+1]
 
new g_msg_bartime
new g_msg_screenfade
new g_msg_statusicon
new g_msg_clcorpse
 
new cvar_revival_time
new cvar_revival_health
new cvar_revival_dis
 
 
new attacker
new attacker1
new flashlight[33]
new flashbattery[33]
new flashlight_r
new flashlight_g
new flashlight_b
 
new planter
new defuser
 
new map_end = 0
 
// max clip
stock 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 };
 
// max bpammo
stock const maxAmmo[31] = { -1, 52, -1, 90, -1, 32, -1, 100, 90, -1, 120, 100, 100, 90, 90, 90, 100, 100,
			30, 120, 200, 32, 90, 120, 60, -1, 35, 90, 90, -1, 100 };
 
new gmsgDeathMsg
new gmsgStatusText
new gmsgBartimer
new gmsgScoreInfo
new gmsgHealth
 
new bool:freeze_ended
new c4state[33]
new c4bombc[33][3] 
new c4fake[33]
new fired[33]
new bool:ghost_check
new ghosttime[33]
new ghoststate[33]
 
new sprite_blood_drop = 0
new sprite_blood_spray = 0
new sprite_gibs = 0
new sprite_white = 0
new sprite_fire = 0
new sprite_beam = 0
new sprite_boom = 0
new sprite_line = 0
new sprite_lgt = 0
new sprite_laser = 0
new sprite_ignite = 0
new sprite_smoke = 0
 
new player_xp[33] = 0		//Holds players experience
new player_lvl[33] = 1			//Holds players level
new player_point[33] = 0		//Holds players level points
new player_item_id[33] = 0	//Items id
new player_item_name[33][128]   //The items name
new player_intelligence[33]
new player_strength[33]
new player_agility[33]
new Float:player_damreduction[33]
new player_dextery[33]
new player_class[33]		
new Float:player_huddelay[33]
 
//Item attributes
new player_b_vampire[33] = 1	//Vampyric damage
new player_b_damage[33] = 1	//Bonus damage
new player_b_money[33] = 1	//Money bonus
new player_b_gravity[33] = 1	//Gravity bonus : 1 = best
new player_b_inv[33] = 1		//Invisibility bonus
new player_b_grenade[33] = 1	//Grenade bonus = 1/chance to kill
new player_b_reduceH[33] = 1	//Reduces player health each round start
new player_b_theif[33] = 1	//Amount of money to steal
new player_b_respawn[33] = 1	//Chance to respawn upon death
new player_b_explode[33] = 1	//Radius to explode upon death
new player_b_heal[33] = 1	//Ammount of hp to heal each 5 second
new player_b_gamble[33] = 1	//Random skill each round : value = vararity
new player_b_blind[33] = 1	//Chance 1/Value to blind the enemy
new player_b_fireshield[33] = 1	//Protects against explode and grenade bonus 
new player_b_meekstone[33] = 1	//Ability to lay a fake c4 and detonate 
new player_b_teamheal[33] = 1	//How many hp to heal when shooting a teammate 
new player_b_redirect[33] = 1	//How much damage will the player redirect 
new player_b_fireball[33] = 1	//Ability to shot off a fireball value = radius
new player_b_ghost[33] = 1	//Ability to walk through stuff
new player_b_eye[33] = 1		//Ability to place camera
new player_b_blink[33] = 1	//Ability to get a railgun
new player_b_windwalk[33] = 1	//Ability to windwalk away
new player_b_usingwind[33] = 1	//Is player using windwalk
new player_b_froglegs[33] = 1	//Ability to hold down duck for 4 sec to frog-jump
new player_b_silent[33]	= 1	//Is player silent
new player_b_dagon[33] = 1	//Ability to nuke an opponent
new player_b_sniper[33] = 1	//Ability to kill in 1/sniper with scout
new player_b_jumpx[33] = 1	//Ability to double jump
new player_b_smokehit[33] = 1	//Ability to hit and kill with smoke :]
new player_b_extrastats[33] = 1	//Ability to gain extra stats
new player_b_firetotem[33] = 1	//Ability to put down a fire totem that explodes after 7 seconds
new player_b_hook[33] = 1	//Ability to grap a player a hook him towards you
new player_b_darksteel[33] = 1	//Ability to damage double from behind the target 	
new player_b_illusionist[33] = 1	//Ability to use the illusionist escape
new player_b_mine[33] = 1	//Ability to lay down mines
new skinchanged[33]
new player_dc_name[33][99]	//Information about last disconnected players name
new player_dc_item[33]		//Information about last disconnected players item
new player_sword[33] 		//nowyitem
new player_ring[33]		//ring stats bust +5
 
/////////////////////////////////////////////////////////////////////
new player_ultra_armor[33]
new player_ultra_armor_left[33]
/////////////////////////////////////////////////////////////////////
 
new Float:player_b_oldsen[33]	//Players old sens
 
new bool:player_b_dagfired[33]	//Fired dagoon?
new bool:used_item[33] 
new jumps[33]			//Keeps charge with the number of jumps the user has made
new bool:dojump[33]		//Are we jumping?
new item_boosted[33]		//Has this user boosted his item?
new earthstomp[33]
new bool:falling[33]
new gravitytimer[33]
new item_durability[33]	//Durability of hold item
new CTSkins[4][]={"sas","gsg9","urban","gign"}
new TSkins[4][]={"arctic","leet","guerilla","terror"}
new SWORD_VIEW[]         = "models/diablomod/v_knife.mdl" 
new SWORD_PLAYER[]       = "models/diablomod/p_knife.mdl" 
new KNIFE_VIEW[] 	= "models/v_knife.mdl"
new KNIFE_PLAYER[] 	= "models/p_knife.mdl"
new C4_VIEW[] 		= "models/v_c4.mdl"
new C4_PLAYER[] 	= "models/p_c4.mdl"
new HE_VIEW[] = "models/v_hegrenade.mdl"
new HE_PLAYER[] = "models/p_hegrenade.mdl"
new FL_VIEW[] = "models/v_flashbang.mdl"
new FL_PLAYER[] = "models/p_flashbang.mdl"
new SE_VIEW[] = "models/v_smokegrenade.mdl"
new SE_PLAYER[] = "models/p_smokegrenade.mdl"
 
new cbow_VIEW[]  = "models/diablomod/v_crossbow.mdl" 
new cvow_PLAYER[]= "models/diablomod/p_crossbow.mdl" 
new cbow_bolt[]  = "models/diablomod/Crossbow_bolt.mdl"
 
new LeaderCT = -1
new LeaderT = -1
 
new JumpsLeft[33]
new JumpsMax[33]
 
new loaded_xp[33]
new sqlstart = 30 // Tyle prob jest na mape na poprawne polaczenie - bo cos sie zapetla gdy wylancza sie serwer (zmiena mapy?)
new asked_sql[33]
new asked_klass[33]
new olny_one_time=0
 
enum { NONE = 0, Mag, Mnich, Paladyn, Zabojca, Nekromanta, Barbarzynca, Ninja, Hunter }
new Race[9][18] = { "Brak","Mag","Mnich","Paladyn","Zabojca","Nekromanta","Barbarzynca", "Ninja", "Lowca" }
new race_heal[9] = { 100,95,150,130,100,90,110,170,120 }
 
new LevelXP[101] = { 0, 226, 471, 784, 1258, 1746, 2258, 2801, 3860, 5022, 
	6203, 7464, 8754, 10345, 11990, 13823, 15826, 17915, 20066, 22433, 
	24913, 27536, 30219, 32924, 35860, 38940, 42160, 45478, 48856, 52408, 
	56011, 59750, 63572, 67446, 71354, 75329, 79747, 84298, 88939, 93694, 
	98599, 103578, 108619, 113887, 119212, 124559, 130121, 135792, 141562, 147363, 
	153312, 159288, 165389, 171851, 178330, 184891, 191688, 198488, 205567, 212755, 
	220031, 227385, 234756, 242231, 249879, 257653, 265439, 273549, 281779, 290066, 
	298427, 306800, 315506, 324260, 333186, 342233, 351459, 360705, 370124, 379674, 
	389280, 398946, 408654, 418484, 428328, 438217, 448320, 458856, 469443, 480137, 
	490913, 501768, 512786, 524008, 535295, 546799, 558329, 570065, 581884, 593881, 
	605946
}
 
new player_class_lvl[33][9]
new player_class_lvl_save[33]
 
new player_xp_old[33]
 
new database_user_created[33]
 
new srv_avg[9] = {1,1,1,1,1,1,1,1,1}
 
//For Hook and powerup sy
new hooked[33]
new Float:player_global_cooldown[33]
 
//For optimization
new last_update_xp[33]
new Float:last_update_perc[33]
new bool:use_addtofullpack
#define ICON_HIDE 0 
#define ICON_SHOW 1
#define ICON_FLASH 2 
#define ICON_S "suithelmet_full"
 
 
new wear_sun[33]
 
 
//Flags a user can have
enum
{
	Flag_Ignite = 0,
	Flag_Hooking,
	Flag_Rot,
	Flag_Dazed,
	Flag_Illusion,
	Flag_Moneyshield,
	Flag_Teamshield,
	Flag_Teamshield_Target,
	num_of_flags
}
 
 
//Flags
new afflicted[33][num_of_flags]
 
//noze
 
new max_knife[33]
new player_knife[33]
new Float:tossdelay[33]
 
//luk
 
new Float:bowdelay[33]
new bow[33]
new button[33]
 
// hunter - slad
 
#define TARACE_TASK 91203
 
new trace_bool[33]
 
#define NADE_VELOCITY	EV_INT_iuser1
#define NADE_ACTIVE	EV_INT_iuser2	
#define NADE_TEAM	EV_INT_iuser3	
#define NADE_PAUSE	EV_INT_iuser4
 
new cvar_throw_vel = 90 // def: 90
new cvar_activate_dis = 175 // def 190
new cvar_nade_vel = 280 //def 280
new Float: cvar_explode_delay = 0.5 // def 0.50
 
 
new g_TrapMode[33]
new g_GrenadeTrap[33] = {0, ... }
new Float:g_PreThinkDelay[33]
 
 
new Float:gfBlockSizeMin1[3]= {-32.0,-4.0,-32.0};
new Float:gfBlockSizeMax1[3]= { 32.0, 4.0, 32.0};
new Float:vAngles1[3] = {90.0,90.0,0.0}
 
new Float:gfBlockSizeMin2[3]= {-4.0,-32.0,-32.0}
new Float:gfBlockSizeMax2[3]= { 4.0, 32.0, 32.0}
new Float:vAngles2[3] = {90.0,0.0,0.0}
 
new casting[33]
new Float:cast_end[33]
new on_knife[33]
new golden_bulet[33]
new ultra_armor[33]
new after_bullet[33]
new num_shild[33]
new invisible_cast[33]
new player_dmg[33]
 
/* PLUGIN CORE REDIRECTING TO FUNCTIONS ========================================================== */
 
 
// SQL //
 
new Handle:g_SqlTuple
 
new g_sqlTable[64] = "dbmod_tables"
new g_boolsqlOK=0
 
// SQL //
 
 
public plugin_init()
{
	new map[32]
	get_mapname(map,31)
	new times[64]
	get_time("%m/%d/%Y - %H:%M:%S" ,times,63)
	log_to_file("addons/amxmodx/logs/diablo.log","%s ### MAPA: %s ### ",times,map)
 
	register_cvar("diablo_sql_host","localhost",FCVAR_PROTECTED)
	register_cvar("diablo_sql_user","root",FCVAR_PROTECTED)
	register_cvar("diablo_sql_pass","root",FCVAR_PROTECTED)
	register_cvar("diablo_sql_database","dbmod",FCVAR_PROTECTED)
 
	register_cvar("diablo_sql_table","dbmod_tablet",FCVAR_PROTECTED)
	register_cvar("diablo_sql_save","0",FCVAR_PROTECTED)	// 0 - nick
								// 1 - ip
								// 2 - steam id	
	register_cvar("diablo_classes", "abcdefgh")
	// a Mag
	// b Paladyn
	// c Mnich
	// d Zabojca
	// e Barbarzynca
	// f Nekromanta
	// g Ninja
	// h Hunter
 
	register_cvar("diablo_avg", "1")	
 
	cvar_revival_time 	= register_cvar("amx_revkit_time", 	"3")
	cvar_revival_health	= register_cvar("amx_revkit_health", 	"25")
	cvar_revival_dis 	= register_cvar("amx_revkit_distance", 	"70.0")
 
	g_msg_bartime	= get_user_msgid("BarTime")
	g_msg_clcorpse	= get_user_msgid("ClCorpse")
	g_msg_screenfade= get_user_msgid("ScreenFade")
	g_msg_statusicon= get_user_msgid("StatusIcon")
 
	register_message(g_msg_clcorpse, "message_clcorpse")
 
	register_event("HLTV", 		"event_hltv", 	"a", "1=0", "2=0")
 
	register_forward(FM_Touch, 		"fwd_touch")
	register_forward(FM_EmitSound, 		"fwd_emitsound")
	register_forward(FM_PlayerPostThink, 	"fwd_playerpostthink")
 
 
	register_plugin("DiabloMod","5.9i PL","Miczu & GuTeK") 
	register_cvar("diablomod_version","5.9i PL",FCVAR_SERVER)
 
	register_cvar("flashlight_custom","1");
	register_cvar("flashlight_drain","1.0");
	register_cvar("flashlight_charge","0.5");
	register_cvar("flashlight_radius","8");
	register_cvar("flashlight_decay","90");
	register_event("Flashlight","event_flashlight","b");
 
	register_event("CurWeapon","CurWeapon","be") 
	register_event("ResetHUD", "ResetHUD", "abe")
	register_event("ScreenFade","det_fade","be","1!0","2!0","7!0")
	register_event("DeathMsg","DeathMsg","ade") 
	register_event("Damage", "Damage", "b", "2!0")
	register_event("SendAudio","freeze_over","b","2=%!MRAD_GO","2=%!MRAD_MOVEOUT","2=%!MRAD_LETSGO","2=%!MRAD_LOCKNLOAD")
	register_event("SendAudio","freeze_begin","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw") 
 
	register_event("SendAudio", "award_defuse", "a", "2&%!MRAD_BOMBDEF")  	
	register_event("BarTime", "bomb_defusing", "be", "1=10", "1=5")
 
	register_logevent("award_plant", 3, "2=Planted_The_Bomb");	
	register_event("StatusIcon", "got_bomb", "be", "1=1", "1=2", "2=c4")
 
	register_event("TextMsg", "award_hostageALL", "a", "2&#All_Hostages_R" ); 
	register_event("TextMsg","host_killed","b","2&#Killed_Hostage") 
	register_event("SendAudio","eventGrenade","bc","2=%!MRAD_FIREINHOLE")
	register_event("TextMsg", "freeze_begin", "a", "2=#Game_will_restart_in")
	register_clcmd("say wyrzuc","dropitem") 
	register_clcmd("say /wyrzuc","dropitem") 
	register_clcmd("say /przedmiot","iteminfo")
	register_clcmd("say /przedmiot","iteminfo")
	register_clcmd("say /noweprzedmioty","show_menu_item")
	register_clcmd("say /przedmioty","show_menu_item")
	register_clcmd("przedmiot","iteminfo")
	register_clcmd("/przedmiot","iteminfo")
	register_clcmd("say /przedmiot","iteminfo")
	register_clcmd("say /pomoc","helpme") 
	register_clcmd("say /klasa","changerace")
	register_clcmd("say /speed","speed")
 
	register_clcmd("say klasa","changerace")
        register_clcmd("say /gracze","cmd_who")		
	register_clcmd("klasa","changerace")
	register_clcmd("say /klasa","changerace")
	register_clcmd("say /klasy","show_menu_klasy")
	register_clcmd("say /klasa","changerace")
	register_clcmd("say klasa","changerace")
	register_clcmd("say /staty", "showskills")
	register_clcmd("say staty", "showskills")
	register_clcmd("say /menu","showmenu") 
	register_clcmd("menu","showmenu")
	register_clcmd("say /komendy","komendy")
	register_clcmd("pomoc","helpme") 
	register_clcmd("say /sklep","buyrune") 
	register_clcmd("/sklep","buyrune") 
	register_clcmd("sklep","buyrune") 	
	register_clcmd("/staty","showskills")
	register_clcmd("/staty","showskills")
	register_clcmd("say /staty","showskills")
	register_clcmd("say /staty","showskills")
	register_clcmd("say /zapiszexp","savexpcom")
	//register_clcmd("say /wczytajexp","LoadXP")
	register_clcmd("say /reset","reset_skill")
	register_clcmd("reset","reset_skill")	 
	register_clcmd("/reset","reset_skill")
 
	register_clcmd("mod","mod_info")
	register_menucmd(register_menuid("Rozdaj Statystyki"), 1023, "skill_menu")
	register_menucmd(register_menuid("Informacje o klasach postaci"), 1023, "klasy")
	register_menucmd(register_menuid("Menu DiabloMod"), 1023, "option_menu")
	register_menucmd(register_menuid("Wybierz Klase postaci"), 1023, "select_class_menu")
	register_menucmd(register_menuid("Sklep z wyposazeniem"), 1023, "select_rune_menu")
	register_menucmd(register_menuid("Lista Nowych Przedmiotow"), 1023, "nowe_itemy")
	gmsgDeathMsg = get_user_msgid("DeathMsg")
	gmsgStatusText = get_user_msgid("StatusText")
	gmsgBartimer = get_user_msgid("BarTime") 
	gmsgScoreInfo = get_user_msgid("ScoreInfo") 
	register_cvar("diablo_dmg_exp","20",0)
	register_cvar("diablo_xpbonus","5",0)
	register_cvar("diablo_xpbonus2","100",0)
	register_cvar("diablo_durability","10",0) 
	register_cvar("SaveXP", "1")
	set_msg_block ( gmsgDeathMsg, BLOCK_SET ) 
	set_task(5.0, "Timed_Healing", 0, "", 0, "b")
	set_task(1.0, "Timed_Ghost_Check", 0, "", 0, "b")
	set_task(0.8, "UpdateHUD",0,"",0,"b")
	register_think("PlayerCamera","Think_PlayerCamera");
	register_think("PowerUp","Think_PowerUp")
	register_think("Effect_Rot","Effect_Rot_Think")
	register_logevent("RoundStart", 2, "0=World triggered", "1=Round_Start")
	register_clcmd("fullupdate","fullupdate")
	register_clcmd("amx_dajitem",   "giveitem", ADMIN_IMMUNITY, "Uzycie: amx_giveitem 'NICK' 'NrITEMU'")
	register_clcmd("amx_dajexp",  "giveexp", ADMIN_IMMUNITY,"Uzycie: amx_giveexp 'NICK' 'ILOSC'")
 
	register_forward(FM_WriteString, "FW_WriteString")
	register_think("Effect_Ignite_Totem", "Effect_Ignite_Totem_Think")
	register_think("Effect_Ignite", "Effect_Ignite_Think")
	register_think("Effect_Slow","Effect_Slow_Think")
	register_think("Effect_Timedflag","Effect_Timedflag_Think")
	register_think("Effect_MShield","Effect_MShield_Think")
	register_think("Effect_Teamshield","Effect_Teamshield_Think")
	register_think("Effect_Healing_Totem","Effect_Healing_Totem_Think")
	register_forward(FM_AddToFullPack, "client_AddToFullPack")
	register_event("SendAudio","freeze_over1","b","2=%!MRAD_GO","2=%!MRAD_MOVEOUT","2=%!MRAD_LETSGO","2=%!MRAD_LOCKNLOAD")
	register_event("SendAudio","freeze_begin1","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
 
	register_cvar("diablo_dir", "addons/amxmodx/diablo/")
 
	get_cvar_string("diablo_dir",Basepath,127)
 
	register_event("Health", "Health", "be", "1!255")
	register_cvar("diablo_show_health","1")
	gmsgHealth = get_user_msgid("Health") 
	//noze
 
	register_touch("throwing_knife", "player", "touchKnife")
	register_touch("throwing_knife", "worldspawn",		"touchWorld")
	register_touch("throwing_knife", "func_wall",		"touchWorld")
	register_touch("throwing_knife", "func_door",		"touchWorld")
	register_touch("throwing_knife", "func_door_rotating",	"touchWorld")
	register_touch("throwing_knife", "func_wall_toggle",	"touchWorld")
	register_touch("throwing_knife", "dbmod_shild",		"touchWorld")
 
	register_touch("throwing_knife", "func_breakable",	"touchbreakable")
	register_touch("func_breakable", "throwing_knife",	"touchbreakable")
 
	register_cvar("diablo_knife","20")
	register_cvar("diablo_knife_speed","1000")
 
	register_touch("xbow_arrow", "player", 			"toucharrow")
	register_touch("xbow_arrow", "worldspawn",		"touchWorld2")
	register_touch("xbow_arrow", "func_wall",		"touchWorld2")
	register_touch("xbow_arrow", "func_door",		"touchWorld2")
	register_touch("xbow_arrow", "func_door_rotating",	"touchWorld2")
	register_touch("xbow_arrow", "func_wall_toggle",	"touchWorld2")
	register_touch("xbow_arrow", "dbmod_shild",		"touchWorld2")
 
	register_touch("xbow_arrow", "func_breakable",		"touchbreakable")
	register_touch("func_breakable", "xbow_arrow",		"touchbreakable")
 
	register_cvar("diablo_arrow","120.0")
	register_cvar("diablo_arrow_multi","2.0")
	register_cvar("diablo_arrow_speed","1500")
 
	register_cvar("diablo_klass_delay","2.5")
 
	//Koniec noze
 
	register_think("grenade", "think_Grenade")
	register_think("think_bot", "think_Bot")
	_create_ThinkBot()
 
	register_forward(FM_TraceLine,"fw_traceline");
 
	return PLUGIN_CONTINUE  
}
 
public sql_start()
{
	if(sqlstart<0) return
	if(g_boolsqlOK) return
 
	new host[128]
	new user[64]
	new pass[64]
	new database[64]
 
	get_cvar_string("diablo_sql_database",database,63)
	get_cvar_string("diablo_sql_host",host,127)
	get_cvar_string("diablo_sql_user",user,63)
	get_cvar_string("diablo_sql_pass",pass,63)
 
	g_SqlTuple = SQL_MakeDbTuple(host,user,pass,database)
 
 
 
	get_cvar_string("diablo_sql_table",g_sqlTable,63)
 
	new q_command[512]
	format(q_command,511,"CREATE TABLE IF NOT EXISTS `%s` ( `nick` VARCHAR( 64 ),`ip` VARCHAR( 64 ),`sid` VARCHAR( 64 ), `klasa` integer( 2 ) , `lvl` integer( 3 ) DEFAULT 1, `exp` integer( 9 ) DEFAULT 0,  `str` integer( 3 ) DEFAULT 0, `int` integer( 3 ) DEFAULT 0, `dex` integer( 3 ) DEFAULT 0, `agi` integer( 3 ) DEFAULT 0 ) ",g_sqlTable)
 
	SQL_ThreadQuery(g_SqlTuple,"TableHandle",q_command)
}
 
//sql//
 
public TableHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	// lots of error checking
	g_boolsqlOK=1
	if(Errcode)
	{
		g_boolsqlOK=0
		log_to_file("addons/amxmodx/logs/diablo.log","Error on Table query: %s",Error)
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		g_boolsqlOK=0
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Table Query failed.")
		g_boolsqlOK=0
		return PLUGIN_CONTINUE
	}
 
	LoadAVG()
 
	return PLUGIN_CONTINUE
}
 
 
public create_klass(id)
{
	if(g_boolsqlOK)
	{	
		if(!is_user_bot(id) && database_user_created[id]==0)
		{
			new name[64]
			new ip[64]
			new sid[64]
 
			get_user_name(id,name,63)
			replace_all ( name, 63, "'", "Q" )
			replace_all ( name, 63, "`", "Q" )
 
			get_user_ip ( id, ip, 63, 1 )
			get_user_authid(id, sid ,63)
 
			log_to_file("addons/amxmodx/logs/test_log.log","*** %s %s *** Create Class ***",name,sid)
 
			for(new i=1;i<9;i++)
			{
				new q_command[512]
				format(q_command,511,"INSERT INTO `%s` (`nick`,`ip`,`sid`,`klasa`,`lvl`,`exp`) VALUES ('%s','%s','%s',%i,%i,%i ) ",g_sqlTable,name,ip,sid,i,srv_avg[i],LevelXP[srv_avg[i]-1])
				SQL_ThreadQuery(g_SqlTuple,"create_klass_Handle",q_command)
			}
			database_user_created[id]=1
		}
	}
	else sql_start()
}
 
public create_klass_Handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	// lots of error checking
	if(Errcode)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Error on create klass query: %s",Error)
 
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","create klass Query failed.")
		return PLUGIN_CONTINUE
	}
 
 
 
	return PLUGIN_CONTINUE
}
 
public load_xp(id)
{
	if(g_boolsqlOK /*&& */)
	{
		if(!is_user_bot(id))
		{
			new name[64]
			new data[1]
			data[0]=id
 
			if(get_cvar_num("diablo_sql_save")==0)
			{
				get_user_name(id,name,63)
				replace_all ( name, 63, "'", "Q" )
				replace_all ( name, 63, "`", "Q" )
 
				new q_command[512]
				format(q_command,511,"SELECT `klasa` FROM `%s` WHERE `nick`='%s' ",g_sqlTable,name)
				SQL_ThreadQuery(g_SqlTuple,"SelectHandle",q_command,data,1)
			}
			else if(get_cvar_num("diablo_sql_save")==1)
			{
				get_user_ip(id, name ,63,1)
				new q_command[512]
				format(q_command,511,"SELECT `klasa` FROM `%s` WHERE `ip`='%s' ",g_sqlTable,name)
				SQL_ThreadQuery(g_SqlTuple,"SelectHandle",q_command,data,1)
			}
			else if(get_cvar_num("diablo_sql_save")==2)
			{
				get_user_authid(id, name ,63)
				new q_command[512]
				format(q_command,511,"SELECT `klasa` FROM `%s` WHERE `sid`='%s' ",g_sqlTable,name)
				SQL_ThreadQuery(g_SqlTuple,"SelectHandle",q_command,data,1)
			}
			loaded_xp[id]=1
		}
	}
	else sql_start()
}
 
public SelectHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	if(Errcode)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Error on load_xp query: %s",Error)
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","load_xp Query failed.")
		return PLUGIN_CONTINUE
	}
 
 
	if(SQL_MoreResults(Query)) return PLUGIN_CONTINUE
	else create_klass(Data[0])		
 
	return PLUGIN_CONTINUE
}
 
//sql//
 
public Health(id) 
{ 
	if(get_cvar_num("diablo_show_health")==1)
	{
		new health = read_data(1) 
		if(health>255)
		{
			message_begin( MSG_ONE, gmsgHealth, {0,0,0}, id ) 
			write_byte( 255 ) 
			message_end() 
		} 
	}
}
 
public speed(id)
{
	new Float:spd = get_user_maxspeed(id)
	client_print(id,print_chat,"Max: %f",spd)
 
	new Float:vect[3]
	entity_get_vector(id,EV_VEC_velocity,vect)
	new Float: sped= floatsqroot(vect[0]*vect[0]+vect[1]*vect[1]+vect[2]*vect[2])
 
	client_print(id,print_chat,"Teraz: %f",sped)
}
 
public plugin_precache()
{ 
	precache_model("models/rpgrocket.mdl")
	precache_model("models/bag.mdl")
	precache_model("models/zombie.mdl")
	precache_model("addons/amxmodx/diablo/mine.mdl")
	precache_model("addons/amxmodx/diablo/totem_ignite.mdl")
	precache_model("addons/amxmodx/diablo/totem_heal.mdl")
	precache_model("models/player/arctic/arctic.mdl")
	precache_model("models/player/leet/leet.mdl")
	precache_model("models/player/guerilla/guerilla.mdl")
	precache_model("models/player/terror/terror.mdl")
	precache_model("models/player/urban/urban.mdl")
	precache_model("models/player/sas/sas.mdl")
	precache_model("models/player/gsg9/gsg9.mdl")
	precache_model("models/player/gign/gign.mdl")
	precache_model(SWORD_VIEW)     
	precache_model(SWORD_PLAYER)
	precache_model(KNIFE_VIEW)     
	precache_model(KNIFE_PLAYER)
	precache_model(C4_VIEW)     
	precache_model(C4_PLAYER)
	precache_model(HE_VIEW)     
	precache_model(HE_PLAYER)
	precache_model(FL_VIEW)     
	precache_model(FL_PLAYER)
	precache_model(SE_VIEW)     
	precache_model(SE_PLAYER)	
	precache_sound("weapons/xbow_hit2.wav")
	precache_sound("weapons/xbow_fire1.wav")
	sprite_blood_drop = precache_model("sprites/blood.spr")
	sprite_blood_spray = precache_model("sprites/bloodspray.spr")
	sprite_ignite = precache_model("addons/amxmodx/diablo/flame.spr")
	sprite_smoke = precache_model("sprites/steam1.spr")
	sprite_laser = precache_model("sprites/laserbeam.spr")
	sprite_boom = precache_model("sprites/zerogxplode.spr") 
	sprite_line = precache_model("sprites/dot.spr")
	sprite_lgt = precache_model("sprites/lgtning.spr")
	sprite_white = precache_model("sprites/white.spr") 
	sprite_fire = precache_model("sprites/explode1.spr") 
	sprite_gibs = precache_model("models/hgibs.mdl")
	sprite_beam = precache_model("sprites/zbeam4.spr") 
 
	precache_model("models/player/arctic/arctic.mdl")
	precache_model("models/player/terror/terror.mdl")
	precache_model("models/player/leet/leet.mdl")
	precache_model("models/player/guerilla/guerilla.mdl")
	precache_model("models/player/gign/gign.mdl")
	precache_model("models/player/sas/sas.mdl")
	precache_model("models/player/gsg9/gsg9.mdl")
	precache_model("models/player/urban/urban.mdl")
	precache_model("models/player/vip/vip.mdl")
 
	precache_sound(SOUND_START)
	precache_sound(SOUND_FINISHED)
	precache_sound(SOUND_FAILED)
	precache_sound(SOUND_EQUIP)
 
	precache_sound("weapons/knife_hitwall1.wav")
	precache_sound("weapons/knife_hit4.wav")
	precache_sound("weapons/knife_deploy1.wav")
	precache_model("models/diablomod/w_throwingknife.mdl")
	precache_model("models/diablomod/bm_block_platform.mdl")
 
	precache_model(cbow_VIEW)
        precache_model(cvow_PLAYER)
	precache_model(cbow_bolt)
}
 
public plugin_cfg() {
 
	server_cmd("sv_maxspeed 1500")
 
}
 
public savexpcom(id)
{
	if(get_cvar_num("SaveXP") == 1 && player_class[id]!=0 && player_class_lvl[id][player_class[id]]==player_lvl[id] ) 
	{
		SubtractStats(id,player_b_extrastats[id])
		SubtractRing(id)
		SaveXP(id)
		BoostStats(id,player_b_extrastats[id])
		BoostRing(id)
	}
}
 
public SaveXP(id)
{
	if(g_boolsqlOK)
	{
		if(!is_user_bot(id) && player_xp[id]!=player_xp_old[id])
		{
			new name[64]
			new ip[64]
			new sid[64]
 
			get_user_name(id,name,63)
			replace_all ( name, 63, "'", "Q" )
			replace_all ( name, 63, "`", "Q" )
 
			get_user_ip(id, ip ,63,1)
			get_user_authid(id, sid ,63)
 
			if(get_cvar_num("diablo_sql_save")==0)
			{
				new q_command[512]
				format(q_command,511,"UPDATE `%s` SET `ip`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `nick`='%s' AND `klasa`='%i' ",g_sqlTable,ip,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],name,player_class[id])
 
				SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
			}
			else if(get_cvar_num("diablo_sql_save")==1)
			{
				new q_command[512]
				format(q_command,511,"UPDATE `%s` SET `nick`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `ip`='%s' AND `klasa`='%i' ",g_sqlTable,name,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],ip,player_class[id])
 
				SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
			}
			else if(get_cvar_num("diablo_sql_save")==2)
			{
				new q_command[512]
				format(q_command,511,"UPDATE `%s` SET `nick`='%s',`ip`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,ip,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],sid,player_class[id])
 
				SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
			}
			player_xp_old[id]=player_xp[id]
 
		}
	}
	else sql_start()
 
	return PLUGIN_HANDLED
} 
 
public Save_xp_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	if(Errcode)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Error on Save_xp query: %s",Error)
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Save_xp Query failed.")
		return PLUGIN_CONTINUE
	}
 
 
	return PLUGIN_CONTINUE
}
 
public LoadXP(id, klasa){
 
	if(is_user_bot(id) || asked_sql[id]==1) return PLUGIN_HANDLED
 
	if(player_class[id]==0)load_xp(id)
 
	if(g_boolsqlOK )
	{
 
		new name[64]
		new data[2]
		data[0]=id
		data[1]=klasa
 
		if(get_cvar_num("diablo_sql_save")==0)
		{
			get_user_name(id,name,63)
			replace_all ( name, 63, "'", "Q" )
			replace_all ( name, 63, "`", "Q" )
 
			new q_command[512]
			format(q_command,511,"SELECT * FROM `%s` WHERE `nick`='%s' AND `klasa`='%i'", g_sqlTable, name, player_class[id])
 
			SQL_ThreadQuery(g_SqlTuple,"Load_xp_handle",q_command,data,2)
			asked_sql[id]=1
		}
		else if(get_cvar_num("diablo_sql_save")==1)
		{
			get_user_ip(id, name ,63,1)
			new q_command[512]
			format(q_command,511,"SELECT * FROM `%s` WHERE `ip`='%s' AND `klasa`='%i'", g_sqlTable, name, player_class[id])  
 
			SQL_ThreadQuery(g_SqlTuple,"Load_xp_handle",q_command,data,2)
			asked_sql[id]=1
		}
		else if(get_cvar_num("diablo_sql_save")==2)
		{
			get_user_authid(id, name ,63)
			new q_command[512]
			format(q_command,511,"SELECT * FROM `%s` WHERE `sid`='%s' AND `klasa`='%i'", g_sqlTable, name, player_class[id])  
 
			SQL_ThreadQuery(g_SqlTuple,"Load_xp_handle",q_command,data,2)
			asked_sql[id]=1
		}
	}
	else sql_start()
	return PLUGIN_HANDLED
} 
 
public Load_xp_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	new id = Data[0]
	asked_sql[id]=0
 
	if(Errcode)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Error on Load_xp query: %s",Error)
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Load_xp Query failed.")
		return PLUGIN_CONTINUE
	}
 
	if(SQL_MoreResults(Query))
	{
 
		player_class[id] = Data[1]
		player_lvl[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"lvl"))	
		player_xp[id] =	SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"exp"))	
		player_xp_old[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"exp"))
 
		player_intelligence[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"int"))
		player_strength[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"str")) 
		player_agility[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"agi")) 
		player_dextery[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"dex")) 
 
		player_point[id]=(player_lvl[id]-1)*2-player_intelligence[id]-player_strength[id]-player_dextery[id]-player_agility[id]	
		if(player_point[id]<0) player_point[id]=0
		player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)		
	}
	return PLUGIN_CONTINUE
}
 
public LoadAVG()
{
	if(g_boolsqlOK)
	{
		new data[2]
		data[0]= get_cvar_num("diablo_avg")
 
		if(data[0])
		{
			for(new i=1;i<9;i++)
			{
				new q_command[512]
				data[1]=i
				//format(q_command,511,"SELECT AVG(`lvl`) FROM `%s` WHERE `lvl` > '%d' AND `klasa`='%d'", g_sqlTable, data[0]-1,i)
				format(q_command,511,"SELECT `klasa`,AVG(`lvl`) AS `AVG` FROM `%s` WHERE `lvl` > '%d' GROUP BY `klasa`", g_sqlTable, data[0]-1)
				SQL_ThreadQuery(g_SqlTuple,"Load_AVG_handle",q_command,data,2)
 
			}
 
		}
	}
	else sql_start()
	return PLUGIN_HANDLED
} 
 
public Load_AVG_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	if(Errcode)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Error on Load_AVG query: %s",Error)
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Load_AVG Query failed.")
		return PLUGIN_CONTINUE
	}
	/*   
	if(SQL_MoreResults(Query))
	{
		new Float: avg
		SQL_ReadResult(Query, 0, avg)
		srv_avg[Data[1]]=floatround(avg)
		//client_print(0,print_chat,"srednia: %f",srv_avg)
	}*/
 
	while(SQL_MoreResults(Query))
	{
		new i = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "klasa"))
		srv_avg[i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "AVG"))
		SQL_NextRow(Query)
	}
	if(olny_one_time==0)
	{
		olny_one_time=1
		look_for_none()
	}
	return PLUGIN_CONTINUE
}
 
public look_for_none()
{
	for(new i=1;i<33;i++)
	{
		if(is_user_alive(i))
		{
			if(player_class[i]==0)
			{
				select_class_query(i)
			}
		}
	}
}
 
public reset_skill(id)
{	
	client_print(id,print_chat,"Reset statystyk...")
	player_point[id] = player_lvl[id]*2-2
	player_intelligence[id] = 0
	player_strength[id] = 0 
	player_agility[id] = 0
	player_dextery[id] = 0 
	BoostRing(id)
	BoostStats(id,player_b_extrastats[id])
 
	skilltree(id)
	set_speedchange(id)
	player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)
}
 
 
public freeze_over()
{
	//new Float: timea
	//timea=get_cvar_float("diablo_klass_delay")
	set_task(get_cvar_float("diablo_klass_delay"), "freezeover", 3659, "", 0, "")
}
 
public freezeover()
{
	freeze_ended = true
}
 
public freeze_begin()
{
	freeze_ended = false
}
 
 
public RoundStart(){
	for (new i=0; i < 33; i++){
		used_item[i] = false
		DemageTake1[i]=1
		count_jumps(i)
		give_knife(i)
		JumpsLeft[i]=JumpsMax[i]
 
		if(player_class[i] == Nekromanta) g_haskit[i]=1
		else g_haskit[i]=0
 
		golden_bulet[i]=0
 
		invisible_cast[i]=0
 
		ultra_armor[i]=0
		num_shild[i]=2+floatround(player_intelligence[i]/25.0,floatround_floor)
 
		set_renderchange(i)
		if(is_user_connected(i)&&player_item_id[i]==66)
		{
			changeskin(i,0) 
		}
	}
 
	kill_all_entity("throwing_knife")
 
	Bot_Setup()		
	ghost_check = false
	check_class()
	use_addtofullpack = false
}
 
#if defined CHEAT
public giveitem(id)
{
	award_item(id, 25)
	return PLUGIN_HANDLED
}
 
public benchmark(id)
{
	new Float:nowtime = halflife_time();
	new iterations = 10
 
	for (new i=0; i < iterations; i++)
	{
		UpdateHUD()
	}
 
	new Float:timespent = halflife_time()-nowtime
 
	client_print(id,print_chat,"Benchmark on: UpdateHUD() with %i iterations done in %f seconds",iterations,timespent)
}
 
#endif
 
/* BASIC FUNCTIONS ================================================================================ */
public csw_c44(id)
{
	client_cmd(id,"weapon_knife")
	engclient_cmd(id,"weapon_knife")
	on_knife[id]=1
}
 
public CurWeapon(id)
{	
	after_bullet[id]=1
 
	new clip,ammo
	new weapon=get_user_weapon(id,clip,ammo)
	invisible_cast[id]=0
 
	if(weapon == CSW_KNIFE) on_knife[id]=1
	else on_knife[id]=0
 
	if ((weapon != CSW_C4 ) && !on_knife[id] && (player_class[id] == Ninja))
	{
		client_cmd(id,"weapon_knife")
		engclient_cmd(id,"weapon_knife")
		on_knife[id]=1
	}
 
 
	if (is_user_connected(id))
	{
		if(player_class[id]==Paladyn && on_knife[id] && JumpsLeft[id]>0){
			fm_set_user_longjump(id,true,true)
		}
		else{
			fm_set_user_longjump(id,false,true)
		}
 
		//if (player_item_id[id] == 17 || player_b_usingwind[id] == 1)// engclient_cmd(id,"weapon_knife") 	
 
		if(player_sword[id] == 1)
		{
 
			if(on_knife[id]){
				entity_set_string(id, EV_SZ_viewmodel, SWORD_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, SWORD_PLAYER)  
			}
			if(weapon == CSW_C4){
				entity_set_string(id, EV_SZ_viewmodel, C4_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, C4_PLAYER)  
			}
			if(weapon == CSW_HEGRENADE){
				entity_set_string(id, EV_SZ_viewmodel, HE_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, HE_PLAYER)  
			}
			if(weapon == CSW_FLASHBANG){
				entity_set_string(id, EV_SZ_viewmodel, FL_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, FL_PLAYER)  
			}
			if(weapon == CSW_SMOKEGRENADE){
				entity_set_string(id, EV_SZ_viewmodel, SE_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, SE_PLAYER)  
			}
 
		}
		if(player_sword[id] == 0)
		{	
			if(on_knife[id]){
				entity_set_string(id, EV_SZ_viewmodel, KNIFE_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, KNIFE_PLAYER)  
			}
			if(weapon == CSW_C4){
				entity_set_string(id, EV_SZ_viewmodel, C4_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, C4_PLAYER)  
			}
			if(weapon == CSW_HEGRENADE){
				entity_set_string(id, EV_SZ_viewmodel, HE_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, HE_PLAYER)  
			}
			if(weapon == CSW_FLASHBANG){
				entity_set_string(id, EV_SZ_viewmodel, FL_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, FL_PLAYER)  
			}
			if(weapon == CSW_SMOKEGRENADE){
				entity_set_string(id, EV_SZ_viewmodel, SE_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, SE_PLAYER)  
			}			
		}
 
		if(bow[id]==1)
		{
			bow[id]=0
			if(on_knife[id])
			{
				entity_set_string(id, EV_SZ_viewmodel, KNIFE_VIEW)  
				entity_set_string(id, EV_SZ_weaponmodel, KNIFE_PLAYER)  
			}
		}
 
		set_gravitychange(id)
		set_speedchange(id)
		set_renderchange(id)
 
		if(player_class[id] == Nekromanta) g_haskit[id] = true
		else g_haskit[id] = false
 
		write_hud(id)
	}
}
 
 
public ResetHUD(id)
{
 
	if (is_user_connected(id))
	{	
		remove_task(id+GLUTON)
		change_health(id,999,0,"")
 
 
 
		if (c4fake[id] > 0)
		{
			remove_entity(c4fake[id])
			c4fake[id] = 0
		}
		SubtractStats(id,player_b_extrastats[id])
		SubtractRing(id)
		if ((player_intelligence[id]+player_strength[id]+player_agility[id]+player_dextery[id])>(player_lvl[id]*2)) reset_skill(id)
 
		BoostStats(id,player_b_extrastats[id])
		BoostRing(id)
 
		fired[id] = 0
 
		player_ultra_armor_left[id]=player_ultra_armor[id]
 
		player_b_dagfired[id] = false
		ghoststate[id] = 0
		earthstomp[id] = 0
 
		if (player_b_blink[id] > 0)
			player_b_blink[id] = 1
 
		if (player_b_usingwind[id] > 0) 
		{
			player_b_usingwind[id] = 0
		}
 
		if (player_point[id] > 0 ) skilltree(id)
		if (player_class[id] == 0) select_class_query(id)
 
		add_bonus_gamble(id)				//MUST be first
		c4state[id] = 0
		client_cmd(id,"hud_centerid 0")  
		auto_help(id)
		add_money_bonus(id)
		set_gravitychange(id)
		add_redhealth_bonus(id)
		SelectBotRace(id)
		set_renderchange(id)
	}
}
 
public DeathMsg(id)
{
	new weaponname[20]
	new kid = read_data(1)
	new vid = read_data(2)
	new headshot = read_data(3)
	read_data(4,weaponname,31)
 
	reset_player(vid)
	msg_bartime(id, 0)
	static Float:minsize[3]
	pev(vid, pev_mins, minsize)
	if(minsize[2] == -18.0)
		g_wasducking[vid] = true
	else
		g_wasducking[vid] = false
 
	set_task(0.5, "task_check_dead_flag", vid)
 
	flashbattery[vid] = MAX_FLASH;
	flashlight[vid] = 0;
 
	if(player_sword[id] == 1){
		if(on_knife[id]){
			if(get_user_team(kid) != get_user_team(vid)) {
				set_user_frags(kid, get_user_frags(kid) + 1)
				award_kill(kid,vid)
			}
		}
	}
	if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
	{
		show_deadmessage(kid,vid,headshot,weaponname)
		award_item(kid,0)
		award_kill(kid,vid)
		add_respawn_bonus(vid)
		add_bonus_explode(vid)
		add_barbarian_bonus(kid)
		if (player_class[kid] == Barbarzynca)
		refill_ammo(kid)
		set_renderchange(kid)
		savexpcom(vid)
	}
}
 
public Damage(id)
{
        if (is_user_connected(id))
        {
                new weapon
                new bodypart
                new attacker_id = get_user_attacker(id,weapon,bodypart)
                if(attacker_id!=0 && attacker_id != id)
                {
                        new damage = read_data(2)
                        if (is_user_connected(attacker_id))
                        {
                                if(get_user_team(id) != get_user_team(attacker_id))
                                {                               
                                        if(damage>175) player_dmg[attacker_id]+=damage/2
                                        else player_dmg[attacker_id]+=damage
                                        dmg_exp(attacker_id)
 
                                        add_damage_bonus(id,damage,attacker_id)
                                        add_vampire_bonus(id,damage,attacker_id)
                                        add_grenade_bonus(id,attacker_id,weapon)
                                        add_theif_bonus(id,attacker_id)
                                        add_bonus_blind(id,attacker_id,weapon,damage)
                                        add_bonus_redirect(id)
                                        add_bonus_necromancer(attacker_id,id)
                                        add_bonus_scoutdamage(attacker_id,id,weapon)    
                                        add_bonus_darksteel(attacker_id,id,damage)
                                        add_bonus_illusion(attacker_id,id,weapon)
                                        item_take_damage(id,damage)
 
                                        if(player_sword[attacker_id] == 1 && weapon==CSW_KNIFE )
                                                change_health(id,-35,attacker_id,"world")
                                        if (HasFlag(attacker_id,Flag_Ignite))
                                                RemoveFlag(attacker_id,Flag_Ignite)
                                        if((HasFlag(id,Flag_Illusion) || HasFlag(id,Flag_Teamshield))&& get_user_health(id) - damage > 0)
                                        {
                                                new weaponname[32]; get_weaponname( weapon, weaponname, 31 ); replace(weaponname, 31, "weapon_", "")
                                                UTIL_Kill(attacker_id,id,weaponname)
                                        }
                                        if (HasFlag(id,Flag_Moneyshield))
                                                change_health(id,damage/2,0,"")
                                        if (damage > 0 && player_agility[id] > 0)
                                        {       
                                                new heal = floatround(player_damreduction[id]*damage)
                                                if (is_user_alive(id)) change_health(id,heal,0,"")
                                        }       
                                        if (HasFlag(id,Flag_Teamshield_Target))
                                        {
                                                new owner = find_owner_by_euser(id,"Effect_Teamshield")
                                                new weaponname[32]; get_weaponname( weapon, weaponname, 31 ); replace(weaponname, 31, "weapon_", "")
                                                if (is_user_alive(owner))
                                                {
                                                        change_health(attacker_id,-damage,owner,weaponname)                             
                                                        change_health(id,damage/2,0,"")
                                                }
                                        }
                                        if(weapon == CSW_GLOCK18 || weapon == CSW_USP || weapon == CSW_P228 || weapon == CSW_DEAGLE || weapon == CSW_ELITE || weapon == CSW_FIVESEVEN)
                                        {
                                                switch(player_class[attacker_id])
                                                {
                                                        case Mag:
                                                        {
                                                                agi=(BASE_SPEED / 2)
                                                                set_speedchange(id)             
                                                                if(DemageTake[id]==0)
                                                                {
                                                                        DemageTake[id]=1
                                                                        set_task(11.0, "funcReleaseVic", id)
                                                                        set_task(11.0, "funcReleaseVic2", id)
                                                                        set_task(2.0, "funcDemageVic", id+GLUTON)
                                                                }               
                                                        }
                                                        case Zabojca:
                                                        {
                                                                set_task(1.5, "funcDemageVic3", id)
                                                        }
                                                        case Hunter:
                                                        {
                                                                new ori[3]
                                                                trace_bool[attacker_id]=id
                                                                get_user_origin(id,ori)
 
                                                                new parms[5];
 
                                                                for(new i=0;i<3;i++)
                                                                {
                                                                        parms[i] = ori[i] 
                                                                }
                                                                parms[3]=attacker_id
                                                                parms[4]=id
                                                                set_task(0.5,"charge_hunter",attacker_id,parms,5)
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
 
public un_rander(task_id)
{
	new id = task_id - TASK_FLASH_LIGHT
	if(is_user_connected(id)) set_renderchange(id)
}
 
public client_PreThink ( id ) 
{	
	if(!is_user_alive(id)||is_user_bot(id)) return PLUGIN_CONTINUE
	new button2 = get_user_button(id);
	new clip,ammo
	new weapon = get_user_weapon(id,clip,ammo)
	if(player_class[id]==Paladyn && weapon == CSW_KNIFE) 
    { 
        if((button2 & IN_DUCK) && (button2 & IN_JUMP) && !(get_user_oldbutton(id) & IN_JUMP)) 
        { 
            if(JumpsLeft[id]>0 && player_speed(id)>100 ) 
            { 
                new flags = pev(id,pev_flags) 
                if(flags & FL_ONGROUND) 
                { 
                    set_pev ( id, pev_flags, flags-FL_ONGROUND ) 
 
                    JumpsLeft[id]-- 
 
                    new Float:va[3],Float:v[3] 
                    entity_get_vector(id,EV_VEC_v_angle,va) 
                    v[0]=floatcos(va[1]/180.0*M_PI)*560.0 
                    v[1]=floatsin(va[1]/180.0*M_PI)*560.0 
                    v[2]=300.0 
                    entity_set_vector(id,EV_VEC_velocity,v) 
                } 
            } 
        } 
    }
	if(flashlight[id] && flashbattery[id] && (get_cvar_num("flashlight_custom")) && (player_class[id] == Mag)) {
		new num1, num2, num3
		num1=random_num(0,2)
		num2=random_num(-1,1)
		num3=random_num(-1,1)
		flashlight_r+=1+num1
		if (flashlight_r>250) flashlight_r-=245
		flashlight_g+=1+num2
		if (flashlight_g>250) flashlight_g-=245
		flashlight_b+=-1+num3
		if (flashlight_b<5) flashlight_b+=240		
		new origin[3];
		get_user_origin(id,origin,3);
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(27); // TE_DLIGHT
		write_coord(origin[0]); // X
		write_coord(origin[1]); // Y
		write_coord(origin[2]); // Z
		write_byte(get_cvar_num("flashlight_radius")); // radius
		write_byte(flashlight_r); // R
		write_byte(flashlight_g); // G
		write_byte(flashlight_b); // B
		write_byte(1); // life
		write_byte(get_cvar_num("flashlight_decay")); // decay rate
		message_end();
 
		new index1, bodypart1
		get_user_aiming(id,index1,bodypart1) 
		if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0))
		{
			if ((index1!=54) && (is_user_connected(index1))) set_user_rendering(index1,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4)	
			remove_task(TASK_FLASH_LIGHT+index1);
			set_task(7.5, "un_rander",TASK_FLASH_LIGHT+index1)
			//set_task(15.0,"un_rander",TASK_NAME,index1)
		}
	}
 
	//Before freeze_ended check
	if (((player_b_silent[id] > 0) || (player_class[id] == Zabojca)) && is_user_alive(id)) 
		entity_set_int(id, EV_INT_flTimeStepSound, 300)
	if(!is_user_connected(id)) return PLUGIN_CONTINUE 
	if(!is_user_alive(id)||is_user_bot(id)) return PLUGIN_CONTINUE   	
	new Float:vect[3]
	entity_get_vector(id,EV_VEC_velocity,vect)
	new Float: sped= floatsqroot(vect[0]*vect[0]+vect[1]*vect[1]+vect[2]*vect[2])
	if((get_user_maxspeed(id)*5)>(sped*9))
		entity_set_int(id, EV_INT_flTimeStepSound, 300)
 
	//bow model
	if (button2 & IN_RELOAD && on_knife[id] && button[id]==0 && player_class[id]==Hunter){
		bow[id]++
		button[id] = 1;
		command_bow(id)
	}
 
	if ((!(button2 & IN_RELOAD)) && on_knife[id] && button[id]==1) button[id]=0
	//
 
	if (!freeze_ended)
		return PLUGIN_CONTINUE
 
	if (earthstomp[id] != 0 && is_user_alive(id))
	{
		static Float:fallVelocity;
		pev(id,pev_flFallVelocity,fallVelocity);
 
		if(fallVelocity) falling[id] = true
		else falling[id] = false;
	}
 
 
	if (player_b_jumpx[id] > 0) Prethink_Doublejump(id)
	if (player_b_blink[id] > 0) Prethink_Blink(id)	
	if (player_b_usingwind[id] == 1) Prethink_usingwind(id)
	if (player_b_oldsen[id] > 0) Prethink_confuseme(id)
	if (player_b_froglegs[id] > 0) Prethink_froglegs(id)
 
 
	//USE Button actives USEMAGIC
 
	if (get_entity_flags(id) & FL_ONGROUND && (!(button2 & (IN_FORWARD+IN_BACK+IN_MOVELEFT+IN_MOVERIGHT)) || (player_class[id] == Mag && player_b_fireball[id]==0)) && is_user_alive(id) && !bow[id] && (on_knife[id] || (player_class[id] == Mag && player_b_fireball[id])) && player_class[id]!=NONE && player_class[id]!=Nekromanta && invisible_cast[id]==0)
	{
		if(casting[id]==1 && halflife_time()>cast_end[id])
		{
			message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
			write_byte( 0 ) 
			write_byte( 0 ) 
			message_end() 
			casting[id]=0
			call_cast(id)
		}
		else if(casting[id]==0)
		{
			new Float: time_delay = 5.0-(player_intelligence[id]/80.0)
 
			if(player_class[id] == Ninja) time_delay*=2.0
			else if(player_class[id] == Mag)
			{
				time_delay=time_delay = 4.0-(player_intelligence[id]/40.0)
				if(player_b_fireball[id]>0) time_delay=random_float(0.5,4.0-(player_intelligence[id]/80.0))
			}
			else if(player_class[id] == Zabojca) time_delay*=0.1
			else if(player_class[id] == Paladyn) time_delay*=1.4
 
			cast_end[id]=halflife_time()+time_delay
 
			new bar_delay = floatround(time_delay,floatround_ceil)
 
			casting[id]=1
 
			message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
			write_byte( bar_delay ) 
			write_byte( 0 ) 
			message_end() 
		}
	}
	else 
	{	
		if(casting[id]==1)
		{
			message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
			write_byte( 0 ) 
			write_byte( 0 ) 
			message_end() 	
		}
		casting[id]=0			
	}
 
 
	if (pev(id,pev_button) & IN_USE && !casting[id])
		Use_Spell(id)
 
	if(player_class[id]==Ninja && (pev(id,pev_button) & IN_RELOAD)) command_knife(id) 
	else if (pev(id,pev_button) & IN_RELOAD && on_knife[id] && max_knife[id]>0) command_knife(id) 
 
	///////////////////// BOW /////////////////////////
	if(player_class[id]==Hunter)
	{
		new clip,ammo
		new weapon = get_user_weapon(id,clip,ammo)	
 
		if(bow[id] == 1)
		{
			if((bowdelay[id] + 4.8 - float(player_intelligence[id]/80))< get_gametime() && button2 & IN_ATTACK)
			{
				bowdelay[id] = get_gametime()
				command_arrow(id) 
			}
			entity_set_int(id, EV_INT_button, (button2 & ~IN_ATTACK) & ~IN_ATTACK2)
		}
 
 
 
 
		// nade
 
		if(g_GrenadeTrap[id] && button2 & IN_ATTACK2)
		{
			switch(weapon)
			{
				case CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE:
				{
					if((g_PreThinkDelay[id] + 0.28) < get_gametime())
					{
						switch(g_TrapMode[id])
						{
							case 0: g_TrapMode[id] = 1
							case 1: g_TrapMode[id] = 0
						}
						client_print(id, print_center, "Granat-Pulapka %s", g_TrapMode[id] ? "[Wl]" : "[Wyl]")
						g_PreThinkDelay[id] = get_gametime()
					}
				}
				default: g_TrapMode[id] = 0
			}
		}
 
	}
	///////////////////////////////////////////////////
 
	return PLUGIN_CONTINUE		
}
 
public client_PostThink( id )
{
	if (player_b_jumpx[id] > 0) Postthink_Doubeljump(id)
	if (earthstomp[id] != 0 && is_user_alive(id))
	{
			if (!falling[id]) add_bonus_stomp(id)
			else set_pev(id,pev_watertype,-3)
	}
 
}
 
public client_AddToFullPack(ent_state,e,edict_t_ent,edict_t_host,hostflags,player,pSet) 
{
	//No players need this rather cpu consuming function - dont run
	if (!use_addtofullpack)
		return FMRES_HANDLED
 
	if (!pev_valid(e)|| !pev_valid(edict_t_ent) || !pev_valid(edict_t_host))
		return FMRES_HANDLED
 
	new classname[32]
	pev(e,pev_classname,classname,31)
 
	new hostclassname[32]
	pev(edict_t_host,pev_classname,hostclassname,31)
 
 
	if (equal(classname,"player") && equal(hostclassname,"player") && player)
	{
		// only take effect if both players are alive & and not somthing else like a ladder
		if (is_user_alive(e) && is_user_alive(edict_t_host) && e != edict_t_host) 
		{
			//host looks at e
			if (HasFlag(e,Flag_Illusion))
				return FMRES_SUPERCEDE
 
			//E Is looking at t and t has the flag
			if (HasFlag(edict_t_host,Flag_Illusion))
				return FMRES_SUPERCEDE			
		}
 
	}
 
	return FMRES_HANDLED
 
}
 
/* FUNCTIONS ====================================================================================== */
 
public skilltree(id)
{
	new text[513] 
	new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
 
 
	format(text, 512, "\yWybierz Staty- \rPunkty: \w[\r%i\w]^n^n\w1. \w[\r%i\w]\yInteligencja [\dWieksze obrazenia czarami\w]^n\w2. \w[\r%i\w] \ySila  [\dWiecej zycia o \r%i\w]^n\w3. \w[\r%i\w]\yZrecznosc  [\dBronie zadaja ci mniejsze obrazenia\w]^n\w4. \w[\r%i\w] \yZwinnosc  [\dSzybciej biegasz i magia zadaje ci mniejsze obrazenia\w]",player_point[id],player_intelligence[id],player_strength[id],player_strength[id]*2,player_agility[id],player_dextery[id])
 
	keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
	show_menu(id, keys, text, -1, "Rozdaj Statystyki")
	return PLUGIN_HANDLED  
} 
 
 
public skill_menu(id, key) 
{ 
	switch(key) 
	{ 
		case 0: 
		{	
			if (player_intelligence[id]<50){
				player_point[id]-=1
				player_intelligence[id]+=1
			}
			else client_print(id,print_center,"Maksymalna ilosc Inteligencji osiagnieta!")
 
		}
		case 1: 
		{	
			if (player_strength[id]<50){
				player_point[id]-=1	
				player_strength[id]+=1
			}
			else client_print(id,print_center,"Maksymalna ilosc Sily osiagnieta!")
		}
		case 2: 
		{	
			if (player_agility[id]<50){
				player_point[id]-=1
				player_agility[id]+=1
				player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)
			}
			else client_print(id,print_center,"Maksymalna ilosc Zrecznosci osiagnieta!")
 
		}
		case 3: 
		{	
			if (player_dextery[id]<50){
				player_point[id]-=1
				player_dextery[id]+=1
				set_speedchange(id)
			}
			else client_print(id,print_center,"Maksymalna ilosc Zwinnosci osiagnieta!")
		}
	}
 
	if (player_point[id] > 0) 
		skilltree(id)
 
 
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
public show_deadmessage(killer_id,victim_id,headshot,weaponname[])
{
	if (!(killer_id==victim_id && !headshot && equal(weaponname,"world")))
	{
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(killer_id)
		write_byte(victim_id)
		write_byte(headshot)
		write_string(weaponname)
		message_end()
	}
}
 
/* ==================================================================================================== */
 
public got_bomb(id){ 
    planter = id; 
    return PLUGIN_CONTINUE 
} 
 
public award_plant()
{
	new Players[32], playerCount, id
	get_players(Players, playerCount, "aeh", "TERRORIST") 
 
	for (new i=0; i<playerCount; i++) 
	{
		id = Players[i]
		Give_Xp(id,get_cvar_num("diablo_xpbonus"))	
		client_print(id,print_chat,"Dostales *%i* proc. doswiadczenia za podlozenie bomby przez twoja druzyne.",get_cvar_num("diablo_xpbonus2"))
	}	
	Give_Xp(planter,get_cvar_num("diablo_xpbonus2"))
}
 
public bomb_defusing(id){ 
    defuser = id; 
    return PLUGIN_CONTINUE 
} 
 
public award_defuse()
{
	new Players[32], playerCount, id
	get_players(Players, playerCount, "aeh", "CT") 
 
	for (new i=0; i<playerCount; i++) 
	{
		id = Players[i] 
		Give_Xp(id,get_cvar_num("diablo_xpbonus"))	
		client_print(id,print_chat,"Dostales *%i* proc. doswiadczenia za rozbrojenie bomby przez twoja druzyne.",get_cvar_num("diablo_xpbonus2"))
	}
	Give_Xp(defuser,get_cvar_num("diablo_xpbonus2"))
}
 
public award_hostageALL(id)
{
	if (is_user_connected(id) == 1)
		Give_Xp(id,get_cvar_num("diablo_xpbonus2")/2)	
}
 
/* ==================================================================================================== */
 
public award_kill(killer_id,victim_id)
{
	if (!is_user_connected(killer_id) || !is_user_connected(victim_id))
		return PLUGIN_CONTINUE
 
	new xp_award = get_cvar_num("diablo_xpbonus")
 
	new Team[32]
	get_user_team(killer_id,Team,31)
 
	if (LeaderCT > 0 && equal(Team,"CT") && !is_user_alive(LeaderCT))
		xp_award-= get_cvar_num("diablo_xpbonus")/4
 
	if (LeaderT > 0 && equal(Team,"TERRORIST") && !is_user_alive(LeaderT))
		xp_award-= get_cvar_num("diablo_xpbonus")/4
 
	if (player_class[killer_id] == Mnich) 
		xp_award+=get_cvar_num("diablo_xpbonus")/4
 
	if (player_xp[killer_id]<player_xp[victim_id]) 
		xp_award+=get_cvar_num("diablo_xpbonus")/4
 
	new more_lvl=player_lvl[victim_id]-player_lvl[killer_id]
 
	if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/81.0)/3.0)))
	else if(more_lvl<-50)xp_award -= get_cvar_num("diablo_xpbonus")*(2/3)
	else if(more_lvl<-40)xp_award -= get_cvar_num("diablo_xpbonus")/2
	else if(more_lvl<-30)xp_award -= get_cvar_num("diablo_xpbonus")/3
	else if(more_lvl<-20)xp_award -= get_cvar_num("diablo_xpbonus")/4
	else if(more_lvl<-10)xp_award -= get_cvar_num("diablo_xpbonus")/7
 
	Give_Xp(killer_id,xp_award)
 
	return PLUGIN_CONTINUE
 
}
 
public Give_Xp(id,amount)
{	
	if(player_class_lvl[id][player_class[id]]==player_lvl[id])
	{
		if(player_xp[id]+amount!=0 && get_playersnum()>1){
			player_xp[id]+=amount
			if (player_xp[id] > LevelXP[player_lvl[id]])
			{
				player_lvl[id]+=1
				player_point[id]+=2
				set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2)
				show_hudmessage(id, "Gratulacje! Awansowales na poziom %i", player_lvl[id]) 
				savexpcom(id)
				player_class_lvl[id][player_class[id]]=player_lvl[id]
			}
 
			if (player_xp[id] < LevelXP[player_lvl[id]-1])
			{
				player_lvl[id]-=1
				player_point[id]-=2
				set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2)
				show_hudmessage(id, "Ups! Spadles na poziom %i", player_lvl[id]) 
				savexpcom(id)
				player_class_lvl[id][player_class[id]]=player_lvl[id]
			}
			write_hud(id)
		}
	}
}
 
/* ==================================================================================================== */
public client_connect(id)
{
//	reset_item_skills(id)  - nie tutaj bo nie loaduje poziomow O.o
	asked_sql[id]=0
	flashbattery[id] = MAX_FLASH
	player_xp[id] = 0		
	player_lvl[id] = 1		
	player_point[id] = 0	
	player_item_id[id] = 0			
	player_agility[id] = 0
	player_strength[id] = 0
	player_intelligence[id] = 0
	player_dextery[id] = 0
	player_b_oldsen[id] = 0.0
	player_class[id] = 0
	player_damreduction[id] = 0.0
	last_update_xp[id] = -1
	player_item_name[id] = "Brak"
	DemageTake[id]=0
	player_b_gamble[id]=0
 
	g_GrenadeTrap[id] = 0
	g_TrapMode[id] = 0
 
	player_ring[id]=0
 
	reset_item_skills(id) // Juz zaladowalo xp wiec juz nic nie zepsuje <lol2>
	reset_player(id)
	set_task(10.0, "Greet_Player", id+TASK_GREET, "", 0, "a", 1)
}
 
public client_putinserver(id)
{
	loaded_xp[id]=0
	player_class_lvl_save[id]=0
	database_user_created[id]=0
	count_jumps(id)
	JumpsLeft[id]=JumpsMax[id]
}
 
public client_disconnect(id)
{
	new ent
	new playername[40]
	get_user_name(id,playername,39)
	player_dc_name[id] = playername
	player_dc_item[id] = player_item_id[id]	
	if (player_b_oldsen[id] > 0.0) client_cmd(id,"sensitivity %f",player_b_oldsen[id])
	savexpcom(id)
 
	remove_task(TASK_CHARGE+id)     
 
	while((ent = fm_find_ent_by_owner(ent, "fake_corpse", id)) != 0)
		fm_remove_entity(ent)
 
	player_class_lvl_save[id]=0
	loaded_xp[id]=0
}
 
/* ==================================================================================================== */
 
public write_hud(id)
{
	if (player_lvl[id] == 0)
		player_lvl[id] = 1
 
	new tpstring[1024] 
 
	new Float:xp_now
	new Float:xp_need
	new Float:perc
 
	if (last_update_xp[id] == player_xp[id])
	{
		perc = last_update_perc[id]
	}
	else
	{
		//Calculate percentage of xp required to level
		if (player_lvl[id] == 1)
		{
			xp_now = float(player_xp[id])
			xp_need = float(LevelXP[player_lvl[id]])
			perc = xp_now*100.0/xp_need
		}
		else
		{
			xp_now = float(player_xp[id])-float( LevelXP[player_lvl[id]-1])
			xp_need = float(LevelXP[player_lvl[id]])-float(LevelXP[player_lvl[id]-1])
			perc = xp_now*100.0/xp_need
		}
	}
 
	last_update_xp[id] = player_xp[id]
	last_update_perc[id] = perc
 
	if(player_class[id]!=Paladyn)
		format(tpstring,1023,"[%s]|Poziom: %i (%0.0f%s)|Przedmiot: %s", Race[player_class[id]], player_lvl[id], perc,"%%",player_item_name[id])
	else
		format(tpstring,1023,"[%s]|Poziom: %i (%0.0f%s)|Przedmiot: %s|Skoki: %i/%i", Race[player_class[id]], player_lvl[id], perc,"%%",player_item_name[id],JumpsLeft[id],JumpsMax[id])
 
	message_begin(MSG_ONE,gmsgStatusText,{0,0,0}, id) 
	write_byte(0) 
	write_string(tpstring) 
	message_end() 
}
 
/* ==================================================================================================== */
 
public UpdateHUD()
{    
	//Update HUD for each player
	for (new id=0; id < 32; id++)
	{	
		//If user is not connected, don't do anything
		if (!is_user_connected(id))
			continue
 
 
		if (is_user_alive(id)) write_hud(id)
		else
		{
			//Show info about the player we're looking at
			new index,bodypart 
			get_user_aiming(id,index,bodypart)  
 
			if(index >= 0 && index < MAX && is_user_connected(index) && is_user_alive(index)) 
			{
				new pname[32]
				get_user_name(index,pname,31)
 
				new Msg[512]
				set_hudmessage(255, 255, 255, 0.78, 0.65, 0, 6.0, 3.0)
				format(Msg,511,"Nick: %s^nPoziom: %i^nKlasa postaci: %s^nPrzedmiot: %s",pname,player_lvl[index],Race[player_class[index]],player_item_name[index])		
				show_hudmessage(id, Msg)
 
			}
		}
	}
}
 
/* ==================================================================================================== */
 
public check_magic(id)					//Redirect and check which items will be triggered
{
	if (player_b_meekstone[id] > 0) item_c4fake(id)
	if (player_b_fireball[id] > 0) item_fireball(id)
	if (player_b_ghost[id] > 0) item_ghost(id)
	if (player_b_eye[id] != 0) item_eye(id)
	if (player_b_windwalk[id] > 0) item_windwalk(id)
	if (player_b_dagon[id] > 0) item_dagon(id)
	if (player_b_theif[id] > 0) item_convertmoney(id)
	if (player_b_firetotem[id] > 0) item_firetotem(id)
	if (player_b_hook[id] > 0) item_hook(id)
	if (player_b_gravity[id] > 0) item_gravitybomb(id)
	if (player_b_fireshield[id] > 0) item_rot(id)
	if (player_b_illusionist[id] > 0) item_illusion(id)
	if (player_b_money[id] > 0) item_money_shield(id)
	if (player_b_mine[id] > 0) item_mine(id)
	if (player_b_teamheal[id] > 0) item_teamshield(id)
	if (player_b_heal[id] > 0) item_totemheal(id)
 
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
public dropitem(id)
{
	if (player_item_id[id] == 0)
	{
		hudmsg(id,2.0,"Nie masz przedmiotu do wyrzucenia!")
		return PLUGIN_HANDLED
	} 
 
	if (item_durability[id] <= 0) 
	{
		hudmsg(id,3.0,"Twoj przedmiot stracil wytrzymalosc!")
	}
	else 
	{
		set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
		show_hudmessage(id, "Przedmiot zostal wyrzucony.")
	}
 
	player_item_id[id] = 0
	player_item_name[id] = "Brak"
	player_b_gamble[id] = 0	//Because gamble uses reset skills
 
	if (player_b_extrastats[id] > 0)
	{
		SubtractStats(id,player_b_extrastats[id])
	}
	if(player_ring[id]>0) SubtractRing(id)
	player_ring[id]=0
 
	reset_item_skills(id)
	set_task(3.0,"changeskin_id_1",id)
	write_hud(id)
 
	set_renderchange(id)
	set_gravitychange(id)
 
	if (player_b_oldsen[id] > 0.0) 
	{
		client_cmd(id,"sensitivity %f",player_b_oldsen[id])
		player_b_oldsen[id] = 0.0
	}
 
 
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
public pfn_touch ( ptr, ptd )
{	
	if (ptd == 0)
		return PLUGIN_CONTINUE
 
	new szClassName[32]
	if(pev_valid(ptd)){
		entity_get_string(ptd, EV_SZ_classname, szClassName, 31)
	}
	else return PLUGIN_HANDLED
 
	if(equal(szClassName, "fireball"))
		{
			new owner = pev(ptd,pev_owner)
			//Touch
			if (get_user_team(owner) != get_user_team(ptr))
			{
				new Float:origin[3]
				pev(ptd,pev_origin,origin)
				Explode_Origin(owner,origin,55+player_intelligence[owner],150)
				remove_entity(ptd)
			}
		}
 
	if (ptr != 0 && pev_valid(ptr))
	{
		new szClassNameOther[32]
		entity_get_string(ptr, EV_SZ_classname, szClassNameOther, 31)
 
 
		if(equal(szClassName, "PowerUp") && equal(szClassNameOther, "player"))
		{
			entity_set_int(ptd,EV_INT_iuser2,1)
		}
 
		if(equal(szClassName, "Mine") && equal(szClassNameOther, "player"))
		{
			new owner = pev(ptd,pev_owner)
			//Touch
			if (get_user_team(owner) != get_user_team(ptr))
			{
				new Float:origin[3]
				pev(ptd,pev_origin,origin)
				Explode_Origin(owner,origin,55+player_intelligence[owner],150)
				remove_entity(ptd)
			}
		}
 
 
		if(equal(szClassName, "grenade") && equal(szClassNameOther, "player"))
		{
			new greModel[64]
			entity_get_string(ptd, EV_SZ_model, greModel, 63)
 
			if(equali(greModel, "models/w_smokegrenade.mdl" ))	
			{
				new id = entity_get_edict(ptd,EV_ENT_owner)
 
				if (is_user_connected(id) 
				&& is_user_connected(ptr) 
				&& is_user_alive(ptr) 
				&& player_b_smokehit[id] > 0
				&& get_user_team(id) != get_user_team(ptr))
				UTIL_Kill(id,ptr,"grenade")
			}
 
 
		}
 
	}
 
 
	/*if(equal(szClassName, "fireball"))
	{
		new Float:origin[3]
		pev(ptd,pev_origin,origin)
		new id = pev(ptd,pev_owner)
		Explode_Origin(id,origin,100,player_b_fireball[id] + player_intelligence[id])
		remove_entity(ptd)
	}*/
 
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public Explode_Origin(id,Float:origin[3],damage,dist)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(3)
	write_coord(floatround(origin[0]))
	write_coord(floatround(origin[1]))
	write_coord(floatround(origin[2]))
	write_short(sprite_boom)
	write_byte(50)
	write_byte(15)
	write_byte(0)
	message_end()
 
	new Players[32], playerCount, a
	get_players(Players, playerCount, "ah") 
 
	for (new i=0; i<playerCount; i++) 
	{
		a = Players[i] 
 
		new Float:aOrigin[3]
		pev(a,pev_origin,aOrigin)
 
		if (get_user_team(id) != get_user_team(a) && get_distance_f(aOrigin,origin) < dist+0.0)
		{
         new dam = damage-player_dextery[a]*2
         if (dam < 0) Effect_Bleed(a,248)
         else {
            Effect_Bleed(a,248)
            change_health(a,-dam,id,"grenade")
         }		
		}
 
	}
}
 
/* ==================================================================================================== */
 
public Timed_Healing()
{
	new Players[32], playerCount, a
	get_players(Players, playerCount, "ah") 
 
	for (new i=0; i<playerCount; i++) 
	{
		a = Players[i] 
		if (player_b_heal[a] <= 0)
			continue
 
		change_health(a,player_b_heal[a],0,"")
	}
}
 
 
/* ==================================================================================================== */
 
public Timed_Ghost_Check(id)
{
	if (ghost_check == true)
	{	
		new Globaltime = floatround(halflife_time())
 
		new Players[32], playerCount, a
		get_players(Players, playerCount, "h") 
 
		for (new i=0; i<playerCount; i++) 
		{
			a = Players[i] 
 
			if (ghoststate[a] == 2 && Globaltime - player_b_ghost[a] > ghosttime[a])
			{
				ghoststate[a] = 3
				ghosttime[a] = 0
				set_user_noclip(a,0)
				ghost_check = false
				new Float:aOrigin[3]
				entity_get_vector(a,EV_VEC_origin,aOrigin)	
 
				if (PointContents (aOrigin) != -1)
				{
					user_kill(a,1)	
				}
				else
				{
					aOrigin[2]+=10
					entity_set_vector(a,EV_VEC_origin,aOrigin)
				}
 
 
 
			}
 
		}
 
	}
}
 
public reset_item_skills(id){
	item_boosted[id] = 0
	item_durability[id] = 0
	jumps[id] = 0
	gravitytimer[id] = 0
	player_b_vampire[id] = 0	//Vampyric damage
	player_b_damage[id] = 0		//Bonus damage
	player_b_money[id] = 0		//Money bonus
	player_b_gravity[id] = 0	//Gravity bonus : 1 = best
	player_b_inv[id] = 0		//Invisibility bonus
	player_b_grenade[id] = 0	//Grenade bonus = 1/chance to kill
	player_b_reduceH[id] = 0	//Reduces player health each round start
	player_b_theif[id] = 0		//Amount of money to steal
	player_b_respawn[id] = 0	//Chance to respawn upon death
	player_b_explode[id] = 0	//Radius to explode upon death
	player_b_heal[id] = 0		//Ammount of hp to heal each 5 second
	player_b_blind[id] = 0		//Chance 1/Value to blind the enemy
	player_b_fireshield[id] = 0	//Protects against explode and grenade bonus 
	player_b_meekstone[id] = 0	//Ability to lay a fake c4 and detonate 
	player_b_teamheal[id] = 0	//How many hp to heal when shooting a teammate 
	player_b_redirect[id] = 0	//How much damage will the player redirect 
	player_b_fireball[id] = 0	//Ability to shot off a fireball value = radius *
	player_b_ghost[id] = 0		//Ability to walk through walls
	player_b_eye[id] = 0	         //Ability to snarkattack
	player_b_blink[id] = 0	//Abiliy to use railgun
	player_b_windwalk[id] = 0	//Ability to windwalk
	player_b_usingwind[id] = 0	//Is player using windwalk
	player_b_froglegs[id] = 0
	player_b_silent[id] = 0
	player_b_dagon[id] = 0		//Abliity to nuke opponents
	player_b_sniper[id] = 0		//Ability to kill faster with scout
	player_b_jumpx[id] = 0
	player_b_smokehit[id] = 0
	player_b_extrastats[id] = 0
	player_b_firetotem[id] = 0
	player_b_hook[id] = 0
	player_b_darksteel[id] = 0
	player_b_illusionist[id] = 0
	player_b_mine[id] = 0
	wear_sun[id] = 0
	player_sword[id] = 0 
	player_ultra_armor_left[id]=0
	player_ultra_armor[id]=0
}
 
public changeskin_id_1(id)
{
	changeskin(id,1)
}
/* =================================================================================================== */
 
public show_menu_klasy(id)
{
	new text[513]
 
	format(text, 512, "\yInformacje o klasach postaci: ^n\w\r1. \wMag^n\w\r2. \wPaladyn^n\w\r3. \wMnich^n\w\r4. \wBarbarzynca^n\w\r5. \wZabojca^n\w\r6. \wNekromanta^n\w\r7. \wNinja^n\w\r8. \wLowca^n^n\w\r0. \wZamknij") 
 
	new keys 
	keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<9)
	show_menu(id, keys, text, -1, "Informacje o klasach postaci")
	return PLUGIN_HANDLED  
} 
 
public klasy(id, key) 
{ 
	switch(key) 
	{ 
		case 0: 
		{	
			mag(id)
 
		}
		case 1: 
		{	
			paladyn(id)
		}
		case 2: 
		{	
			mnich(id)
		}
		case 3:
		{
			barbarzynca(id)
		}
		case 4:
		{
			zabojca(id)
		}
		case 5:
		{
			nekromanta(id)
		}
		case 6:
		{
			ninja(id)
		}
		case 7:
		{
			Lowca(id)
		}
		case 9:
		{
			return PLUGIN_HANDLED
		}
	}
 
	return PLUGIN_HANDLED
}
public mag(id){
	showitem(id,"Mag"," ","<br>[-]Ma 90HP na poczatek.<br>[+]Strzelajac z pistoletu spowalnia wroga, oraz wysysa mu 5HP co 2 sek. przez 15 sek.<br>[+]Posiada Latarke, ktora umozliwia po jej wlaczeniu widzenie niewidzialnych.<br><br>","Brak")
}
public paladyn(id){
	showitem(id,"Paladyn"," ","<br>[+]Ma 130HP na poczatek.<br>[+]Moze wykonywac 5 dlugich skokow, co runde<br>[+]Jego pancerz absoruje obrazenia o 10HP.<br><br?","Brak")
}
public mnich(id){
	showitem(id,"Mnich"," ","<br>[+]Ma 150HP na poczatek.<br>[+]Zarabia 2 razy wiecej doswiadczenia, od innych klas postaci.<br><br>","Brak")
}
public barbarzynca(id){
	showitem(id,"Barbarzynca"," ","<br>[+]Ma 130HP na poczatek.<br>[+]Gdy zabije przeciwnika, to dostaje 200% uzbrojenia.<br>[+]Odzyskuje takze czesc HP, oraz amunicji.<br><br>","Brak")	
}
public zabojca(id){
	showitem(id,"Zabojca"," ","<br>[+/-]Ma 100HP na poczatek.<br>[+]Nie slychac jego krokow.<br>[+]Gdy zaatakuje przeciwnika z pistoletu, to on zostanie pozniej wyrzucony w gore.<br><br>","Brak")
}
public nekromanta(id){
	showitem(id,"Nekromanta"," ","<br>[-]Ma 90HP na poczatek.<br>[+]Potrafi wyssac z przeciwnika 10HP, co kazdy strzal.<br>[+]Ma mozliwosc wskrzeszania zmarlych.<br><br>","Brak")
}
public ninja(id){
	showitem(id,"Ninja"," ","<br>[+]Ma 170HP na poczatek.<br>[+]Jest prawie niewidzialny<br>[+]Potrafi bardzo wysoko skakac<br>[-]Moze uzywac tylko noza <br><br>","Brak")
}
public Lowca(id){
	showitem(id,"Lowca"," ","<br>[+]Ma 120HP na poczatek.<br>[+]Moze zastawiac pulapki z granatow.<br>[+]Posiada Kusze,ktora zadaje przeciwnikom smiertelne obrazenia.<br>[+]Gdy zaatakuje przeciwnika pistoletem, to on pozostawia za soba slady.<br><br>","Brak")
}
 
 
 
/* =====================================*/
/* ==================================================================================================== */
 
public auto_help(id)
{
	new rnd = random_num(1,5+player_lvl[id])
	if (rnd <= 5)
		set_hudmessage(0, 180, 0, -1.0, 0.70, 0, 10.0, 5.0, 0.1, 0.5, 11) 	
	if (rnd == 1)
		show_hudmessage(id, "Jak chcesz wyrzucic przedmiot,napisz /wyrzuc.Jesli chcesz wiedziec cos o swoim przedmiocie, napisz /przedmiot.")
	if (rnd == 2)
		show_hudmessage(id, "Przedmioty uzywa sie za pomoca klawisza E")
	if (rnd == 3)
		show_hudmessage(id, "Jesli chcesz wiecej pomocy, napisz /pomoc.Jak nie wiesz,jakie sa komendy, napisz /komendy")
	if (rnd == 4)
		show_hudmessage(id, "Warto uzywac komendy /menu, ktora uprosci twoja gre.")
	if (rnd == 5)
		show_hudmessage(id, "Jesli chcesz kupic, lub ulepszyc przedmiot, napisz /sklep.")
}
 
 
/* ==================================================================================================== */
 
public helpme(id)
{	 
	showitem(id,"Menu Pomocy","Brak","Brak","Za zabijanie wrogow,dostajesz przedmioty i doswiadczenie.<br><br>Aby dowiedziec sie wiecej o swoim przedmiocie napisz /przedmiot , a jak chcesz go wyrzucic napisz /wyrzuc.<br><br>Przedmioty uzywa sie za pomoca klawisza E.<br><br>Napisz /staty,aby zobaczyc,jak wygladaja twoje statystyki.<br><br>")
}
 
 
/* ==================================================================================================== */
 
 
 
/* ==================================================================================================== */
 
public komendy(id)
{
showitem(id,"Komendy","Brak","Brak","<br>/klasa - Zmiana klasy postaci<br>/klasy - Opis klas postaci<br>/sklep - Sklep z wyposazeniem<br>/przedmiot - Informacja o twoim przedmiocie<br>/menu - Wyswietla menu DiabloMod<br>/staty - Pokazuje twoje statystyki<br>/wyrzuc - Wyrzuca aktualny przedmiot<br>/noweprzedmioty - Opis nowych przedmiotow<br>/reset - Resetuje twoje statystyki<br>/zapiszexp - Zapisuje poziom i doswiadzcenie<br>/gracze - Wyswietla liste graczy na serwerze<br><br>")
}
 
/* ==================================================================================================== */
 
public showitem(id,itemname[],itemvalue[],itemeffect[],Durability[])
{
	new diabloDir[64]	
	new g_ItemFile[64]
	new amxbasedir[64]
	get_basedir(amxbasedir,63)
 
	format(diabloDir,63,"%s/diablo",amxbasedir)
 
	if (!dir_exists(diabloDir))
	{
		new errormsg[512]
		format(errormsg,511,"Blad: Folder %s/diablo nie mogł być znaleziony. Prosze skopiowac ten folder z archiwum do folderu amxmodx",amxbasedir)
		show_motd(id, errormsg, "An error has occured")	
		return PLUGIN_HANDLED
	}
 
 
	format(g_ItemFile,63,"%s/diablo/item.txt",amxbasedir)
	if(file_exists(g_ItemFile))
		delete_file(g_ItemFile)
 
	new Data[768]
 
	//Header
	format(Data,767,"<html><head><title>Informacje o przedmiocie</title></head>")
	write_file(g_ItemFile,Data,-1)
 
	//Background
	format(Data,767,"<body text=^"#FFFF00^" bgcolor=^"#000000^" background=^"%sdrkmotr.jpg^">",Basepath)
	write_file(g_ItemFile,Data,-1)
 
	//Table stuff
	format(Data,767,"<table border=^"0^" cellpadding=^"0^" cellspacing=^"0^" style=^"border-collapse: collapse^" width=^"100%s^"><tr><td width=^"0^">","^%")
	write_file(g_ItemFile,Data,-1)
 
	//ss.gif image
	format(Data,767,"<p align=^"center^"><img border=^"0^" src=^"%sss.gif^"></td>",Basepath)
	write_file(g_ItemFile,Data,-1)
 
 
	//item name
	format(Data,767,"<td width=^"0^"><p align=^"center^"><font face=^"Arial^"><font color=^"#FFCC00^"><b>Nazwa Przedmiotu: </b>%s</font><br>",itemname)
	write_file(g_ItemFile,Data,-1)
 
	//item value
	format(Data,767,"<font color=^"#FFCC00^"><b><br>Wartosc: </b>%s</font><br>",itemvalue)
	write_file(g_ItemFile,Data,-1)
 
	//Durability
	format(Data,767,"<font color=^"#FFCC00^"><b><br>Jakosc: </b>%s</font><br><br>",Durability)
	write_file(g_ItemFile,Data,-1)
 
	//Effects
	format(Data,767,"<font color=^"#FFCC00^"><b>Informacje:</b> %s</font></font></td>",itemeffect)
	write_file(g_ItemFile,Data,-1)
 
	//image ss
	format(Data,767,"<td width=^"0^"><p align=^"center^"><img border=^"0^" src=^"%sgf.gif^"></td>", Basepath)
	write_file(g_ItemFile,Data,-1)
 
	//end
	format(Data,767,"</tr></table></body></html>")
	write_file(g_ItemFile,Data,-1)
 
	//show window with message
	show_motd(id, g_ItemFile, "Informacje o Przedmiocie")
 
	return PLUGIN_HANDLED
 
}
 
 
/* ==================================================================================================== */
 
public iteminfo(id)
{
	new itemvalue[100]
 
	if (player_item_id[id] <= 10) itemvalue = "Zwykla"
	if (player_item_id[id] <= 30) 
		itemvalue = "Niespotykana"
	else 
		itemvalue = "Rzadka"
 
	if (player_item_id[id] > 42) itemvalue = "Unikatowa"
 
	new itemEffect[200]
 
 
	new TempSkill[11]					//There must be a smarter way
 
	if (player_b_vampire[id] > 0) 
	{
		num_to_str(player_b_vampire[id],TempSkill,10)
		add(itemEffect,199,"Wysysa ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," HP za kazdym razem, jak uderzysz wroga.<br>")
	}
	if (player_b_damage[id] > 0) 
	{
		num_to_str(player_b_damage[id],TempSkill,10)
		add(itemEffect,199,"Dodaje ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199,"  dodatkowych obrazen do twoich broni.<br>")
	}
	if (player_b_money[id] > 0) 
	{
		num_to_str(player_b_money[id],TempSkill,10)
		add(itemEffect,199,"Dodaje ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," zlota i w kazdej rundzie. Absoruje takze obrazenia fizyczne o 50%, gdy go uzyjesz.<br>")
	}
	if (player_b_gravity[id] > 0) 
	{
		num_to_str(player_b_gravity[id],TempSkill,10)
		add(itemEffect,199,"Twoj skok jest podniesiony o ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," punktow. Gdy bedziesz w powietrzu,uzyj go,by wywolac Trzesienie Ziemi. Obrazenia trzesienia zaleza od wysokosci skoku i twojej Sily.<br>")
	}
	if (player_b_inv[id] > 0) 
	{
		num_to_str(player_b_inv[id],TempSkill,10)
		add(itemEffect,199,"Twoja widzialnosc jest obnizona z 255 do ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199,"<br>")
	}
	if (player_b_grenade[id] > 0) 
	{
		num_to_str(player_b_grenade[id],TempSkill,10)
		add(itemEffect,199,"Masz 1/")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," szans, aby zabic smiertelnie przeciwnika z Granatu Wybuchowego.<br>")
	}
	if (player_b_reduceH[id] > 0) 
	{
		num_to_str(player_b_reduceH[id],TempSkill,10)
		add(itemEffect,199,"Twoje zdrowie jest obnizone o ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," HP, co kazda runde, oraz twoja Sila nie wlicza sie w statystyki.<br>")
	}
	if (player_b_theif[id] > 0) 
	{
		num_to_str(player_b_theif[id],TempSkill,10)
		add(itemEffect,199,"Masz 1/7 szans na okradniecie kogos ze")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," zlota, gdy uderzysz swojego wroga. Mozesz takze zamienic 1000 zlota na 15 HP.<br>")
	}
	if (player_b_respawn[id] > 0) 
	{
		num_to_str(player_b_respawn[id],TempSkill,10)
		add(itemEffect,199,"Masz 1/")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," szans odrodzenia sie po smierci.<br>")
	}
	if (player_b_explode[id] > 0) 
	{
		num_to_str(player_b_explode[id],TempSkill,10)
		add(itemEffect,199,"Gdy umierasz, to wybuchasz w promieniu ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," metrow, ktory zadaje 75 HP wrogom,ktorzy sa wokol ciebie. Im wiecej masz Inteligencji, tym wiekszy jest zasieg wybuchu.<br>")
	}
	if (player_b_heal[id] > 0) 
	{
		num_to_str(player_b_heal[id],TempSkill,10)
		add(itemEffect,199,"Zyskasz dodatkowe ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," HP co kazde 5 sekund, jak polozysz Totem. Dziala on przez 7 sekund.<br>")
	}
	if (player_b_gamble[id] > 0) 
	{
		num_to_str(player_b_gamble[id],TempSkill,10)
		add(itemEffect,199,"Mozesz zyskac losowa umiejetnosc na poczatku kazdej rundy, Masz na to 1/")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," szans.<br>")
	}
	if (player_b_blind[id] > 0) 
	{
		num_to_str(player_b_blind[id],TempSkill,10)
		add(itemEffect,199,"Masz 1/")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," szans zeby twoj przeciwnik zostal oslepiony.<br>")
	}
	if (player_b_fireshield[id] > 0) 
	{
		num_to_str(player_b_fireshield[id],TempSkill,10)
		add(itemEffect,199,"Nie mozesz zostac zabity przez Kule Chaosu, Piekielna Kule albo Ognista Line.<br>")
		add(itemEffect,199,"Zadaj obrazenia, aby spowolnic i oslepic kazdego wroga wokol ciebie.<br>")
	}
	if (player_b_meekstone[id] > 0) 
	{
		num_to_str(player_b_meekstone[id],TempSkill,10)
		add(itemEffect,199,"Podloz Falszywa bombe. Gdy przeciwnik zblizy sie do niej, to bomba wybuchnie, zadajac smiertelne obrazenia.<br>")
	}
	if (player_b_teamheal[id] > 0) 
	{
		num_to_str(player_b_teamheal[id],TempSkill,10)
		add(itemEffect,199,"Uzyj, aby aktywowac tarcze na swoim przyjacielu.<br>")
		add(itemEffect,199," Cale uszkodzenia tarczy sa odzwierciedlone. Zginiesz, jesli zostaniesz zaatakowany, podczas uzywania przedmiotu.")
	}
	if (player_b_redirect[id] > 0) 
	{
		num_to_str(player_b_redirect[id],TempSkill,10)
		add(itemEffect,199,"Twoj pancerz absoruje obrazenia o ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," HP.<br>")
	}
	if (player_b_fireball[id] > 0) 
	{
		num_to_str(player_b_fireball[id],TempSkill,10)
		add(itemEffect,199,"Mozesz wyczarowac Ognista Kule. Zada obrazenia w zasiegu ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," metrow. Im wiecej masz Inteligencji, tym wieksze zadasz obrazenia.<br>")
	}
	if (player_b_ghost[id] > 0) 
	{
		num_to_str(player_b_ghost[id],TempSkill,10)
		add(itemEffect,199,"Mozesz przenikac przez sciany, tak jak Duch przez ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," sekund.<br>")
	}
	if (player_b_eye[id] > 0) 
	{
		add(itemEffect,199,"Podloz Magiczne Oko. Mozesz je ciagle wlaczac i wylaczac,Aby widziec co sie dzieje w innym miejscu mapy.")
 
	}
	if (player_b_blink[id] > 0) 
	{
		add(itemEffect,199,"Mozesz teleportowac sie za pomoca noza. Im wiecej masz Inteligencji, tym teleportujesz sie na wiekszy dystans.")
	}
 
	if (player_b_windwalk[id] > 0) 
	{
		num_to_str(player_b_windwalk[id],TempSkill,10)
		add(itemEffect,199,"Mozesz stac sie niewidzialny. W tym czasie nie bedziesz mogl atakowac, ale za to bedziesz szybszy na czas ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," sekund.<br>")
	}
 
	if (player_b_froglegs[id] > 0)
	{
		add(itemEffect,199,"Mozesz wykonac dlugi skok co 3 sekundy, wystarczy kucnac.")
	}
	if (player_b_dagon[id] == 1)
	{
		add(itemEffect,199,"Uderz przeciwnika ognistym promieniem, ktory zada drastyczne obrazenia.")
		add(itemEffect,199,"Wieksza ilosc Inteligencji zwiekszy zasieg ataku promienia.")
	}
	if (player_b_sniper[id] > 0) 
	{
		num_to_str(player_b_sniper[id],TempSkill,10)
		add(itemEffect,199,"Masz 1/")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," szans na smiertelne zabicie przeciwnika z Wiatrowki.<br>")
	}
	if (player_b_jumpx[id] > 0)
	{
		num_to_str(player_b_jumpx[id],TempSkill,10)
		add(itemEffect,199,"Mozesz podskoczyc ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," razy w powietrzu, podczas wykonywania skoku.<br>")	
	}
	if (player_b_smokehit[id] > 0)
	{
		add(itemEffect,199,"Twoje Granaty Dymne zabija natychmiast wroga, jezeli on bedzie w zasiegu dymu.")
	}
	if (player_b_extrastats[id] > 0)
	{
		num_to_str(player_b_extrastats[id],TempSkill,10)
		add(itemEffect,199,"Zyskasz dodatkowe ")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," punktow do wszystkich statystyk.<br>")
	}
	if (player_b_firetotem[id] > 0)
	{
		num_to_str(player_b_firetotem[id],TempSkill,10)
		add(itemEffect,199,"Poloz eksplodujacy Totem na ziemie, ktory eksploduje po 7 sekundach. I zabije osoby w zasiegu ")
		add(itemEffect,199,TempSkill)
	}
	if (player_b_hook[id] > 0)
	{
		num_to_str(player_b_hook[id],TempSkill,10)
		add(itemEffect,199,"Wyrzuc hak na zasieg 600 metrow. Jesli trafisz przeciwnika,to go przyciagniesz do siebie. Im wieksza Inteligencja,tym szybsza predkosc Haku.")
	}
	if (player_b_darksteel[id] > 0)
	{		
		new ddam = floatround(player_strength[id]*2*player_b_darksteel[id]/10.0)*3
 
		num_to_str(player_b_darksteel[id],TempSkill,10)
		add(itemEffect,199,"Dostaniesz 15 + 0.")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199,"*Sila: ")
		num_to_str(ddam,TempSkill,10)
		add(itemEffect,199,TempSkill)
		add(itemEffect,199," dodatkowych obrazen kiedy uderzysz swojego przeciwnika od tylu.")
	}
	if (player_b_illusionist[id] > 0)
	{
		add(itemEffect,199,"Mozesz stac sie niewiedzialnym przez 7 sekund. Tylko jesli zostaniesz trafiony podczas uzywania przedmiotu, to zginiesz.")
	}
	if (player_b_mine[id] > 0)
	{
		add(itemEffect,199,"Podloz niewidzialna mine(Maks.3 na runde). Kiedy mina ekspoduje, to zada przeciwnikowi 50HP. Im wiecej masz Inteligencji, tym wieksze zadasz obrazenia.")
	}
	if (player_item_id[id]==66)
	{
		add(itemEffect,199,"Plaszcz powoduje,ze wygladasz jak przeciwnik. Staraj sie atakowac raczej od tylu,lub z zaskoczenia,aby cie wrog nie rozpoznal.")
	}
	if (player_ultra_armor[id]>0)
	{
		add(itemEffect,199,"Masz szanse, ze twoj pancerz odbije pocisk od przeciwnika.")
	}
 
 
	new Durability[10]
	num_to_str(item_durability[id],Durability,9)
	if (equal(itemEffect,"")) showitem(id,"Brak","Brak","Aby dostac przedmiot, zabij przeciwnika,lub kup go w sklepie.","Brak")
	if (!equal(itemEffect,"")) showitem(id,player_item_name[id],itemvalue,itemEffect,Durability)
 
}
 
/* ==================================================================================================== */
 
public award_item(id, itemnum)
{
	if (player_item_id[id] != 0)
		return PLUGIN_HANDLED
 
	set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 4.0, 0.2, 0.3, 5)
	new rannum = random_num(1,68)
 
	new maxfind = player_agility[id]
	if (maxfind > 15) maxfind = 15
 
	new rf = random_num(1,25-maxfind)
 
	if (itemnum > 0) rannum = itemnum
	else if (itemnum < 0) return PLUGIN_HANDLED
 
	if (rf == 3 && itemnum == 0)						//We found a rare item			
	{
		award_unique_item(id)	
		rannum = -1
	}
 
	//Set durability, make this item dependant?
	item_durability[id] = 250
	switch(rannum)
	{
		case 1:
		{
			player_item_name[id] = "Wzmacniacz z Brazu"
			player_item_id[id] = rannum
			player_b_damage[id] = random_num(5,10)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dodaje %i dodatkowych obrazen do twoich broni.i",player_item_name[id],player_b_damage[id])
		}
 
		case 2:
		{
			player_item_name[id] = "Wzmacniacz z Srebra"
			player_item_id[id] = rannum
			player_b_damage[id] = random_num(10,15)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dodaje %i dodatkowych obrazen do twoich broni.",player_item_name[id],player_b_damage[id])
		}
 
		case 3:
		{
			player_item_name[id] = "Wzmacniacz ze Zlota"
			player_item_id[id] = rannum
			player_b_damage[id] = random_num(15,20)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dodaje %i dodatkowych obrazen do twoich broni.",player_item_name[id],player_b_damage[id])	
		}
		case 4:
		{
			player_item_name[id] = "Rozdzka Wampira"
			player_item_id[id] = rannum
			player_b_vampire[id] = random_num(5,10)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Wysysasz %i HP przeciwnikowi, gdy go uderzysz.",player_item_name[id],player_b_vampire[id])	
		}
		case 5:
		{
			player_item_name[id] = "Amulet Wampira"
			player_item_id[id] = rannum
			player_b_vampire[id] = random_num(10,15)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Wysysasz %i HP przeciwnikowi, gdy go uderzysz.",player_item_name[id],player_b_vampire[id])	
		}
		case 6:
		{
			player_item_name[id] = "Berlo Drakuli"
			player_item_id[id] = rannum
			player_b_vampire[id] = random_num(15,20)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Wysysasz %i HP przeciwnikowi, gdy go uderzysz.",player_item_name[id],player_b_vampire[id])	
		}
		case 7:
		{
			player_item_name[id] = "Mala torba z Brazu"
			player_item_id[id] = rannum
			player_b_money[id] = random_num(500,1000)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dostajesz %i zlota, co kazda runde. Absoruje takze obrazenia o polowe HP.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)	
		}
		case 8:
		{
			player_item_name[id] = "Srednia torba z Srebra"
			player_item_id[id] = rannum
			player_b_money[id] = random_num(1000,2500)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dostajesz %i zlota, co kazda runde. Absoruje takze obrazenia o polowe HP.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)	
		}
		case 9:
		{
			player_item_name[id] = "Duza torba ze Zlota"
			player_item_id[id] = rannum
			player_b_money[id] = random_num(2500,5000)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dostajesz %i zlota, co kazda runde. Absoruje takze obrazenia o polowe HP.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)	
		}
		case 10:
		{
			player_item_name[id] = "Skrzydla malego Aniola"
			player_item_id[id] = rannum
			player_b_gravity[id] = random_num(1,5)
 
			if (is_user_alive(id))
				set_gravitychange(id)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Skaczesz wyzej o %i punktow. Mozesz takze wywolywac trzesienie ziemi.",player_item_name[id],player_b_gravity[id])	
		}
		case 11:
		{
			player_item_name[id] = "Skrzydla Arch-Aniola"
			player_item_id[id] = rannum
			player_b_gravity[id] = random_num(5,10)
 
			if (is_user_alive(id))
				set_gravitychange(id)
 
			show_hudmessage(id, "Znalazles przedmiot: %s :: Skaczesz wyzej o %i punktow. Mozesz takze wywolywac trzesienie ziemi.",player_item_name[id],player_b_gravity[id])	
 
		}
		case 12:
		{
			player_item_name[id] = "Helm Niewidzialnosci"
			player_item_id[id] = rannum
			player_b_inv[id] = random_num(150,200)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Jestes bardziej niewidoczny o %i punktow.",player_item_name[id],255-player_b_inv[id])	
		}
		case 13:
		{
			player_item_name[id] = "Plaszcz Niewidzialnosci"
			player_item_id[id] = rannum
			player_b_inv[id] = random_num(70,100)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Jestes bardziej niewidoczny o %i punktow.",player_item_name[id],255-player_b_inv[id])	
		}
		case 14:
		{
			player_item_name[id] = "Zbroja Niewidocznosci"
			player_item_id[id] = rannum
			player_b_inv[id] = random_num(40,70)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Jestes bardziej niewidoczny o %i punktow.",player_item_name[id],255-player_b_inv[id])	
		}
		case 15:
		{
			player_item_name[id] = "Pierscien Ognia"
			player_item_id[id] = rannum
			player_b_grenade[id] = random_num(3,5)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans, aby zabic wroga Granatem Wybuchowym",player_item_name[id],player_b_grenade[id])	
		}
		case 16:
		{
			player_item_name[id] = "Amulet Ognia"
			player_item_id[id] = rannum
			player_b_grenade[id] = random_num(1,2)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans, aby zabic wroga Granatem Wybuchowym",player_item_name[id],player_b_grenade[id])	
		}
		case 17:
		{
			player_item_name[id] = "Pierscien Zjawy"
			player_item_id[id] = rannum
			player_b_reduceH[id] = 95
			player_b_inv[id] = 8	
			item_durability[id] = 100
 
			if (is_user_alive(id)) set_user_health(id,5)		
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz tylko 5HP, ale jestes prawie niewidzialny",player_item_name[id])	
		}
		case 18:
		{
			player_item_name[id] = "Arabskie Buty"
			player_item_id[id] = rannum
			player_b_theif[id] = random_num(1000,2000)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/7 szans by ukrasc wrogowi %i zlota. Mozesz takze zamienic zloto na zycie.",player_item_name[id],player_b_theif[id])	
		}
		case 19:
		{
			player_item_name[id] = "Pierscien Feniksa"
			player_item_id[id] = rannum
			player_b_respawn[id] = random_num(3,5)
			show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans do ponownego odrodzenia sie po smierci",player_item_name[id],player_b_respawn[id])	
		}
		case 20:
		{
			player_item_name[id] = "Pierscien Alchemika"
			player_item_id[id] = rannum
			player_b_respawn[id] = random_num(1,2)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans, aby ponownie odrodzic sie po smierci",player_item_name[id],player_b_respawn[id])	
		}
		case 21:
		{
			player_item_name[id] = "Kula Chaosu"
			player_item_id[id] = rannum
			player_b_explode[id] = random_num(150,300)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Wybuchniesz zaraz po smierci w promieniu %i metrow",player_item_name[id],player_b_explode[id])	
		}
		case 22:
		{
			player_item_name[id] = "Kula Piekla"
			player_item_id[id] = rannum
			player_b_explode[id] = random_num(300,500)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Wybuchniesz zaraz po smierci w promieniu %i metrow",player_item_name[id],player_b_explode[id])	
		}
		case 23:
		{
			player_item_name[id] = "Totem zlotego Posazka"
			player_item_id[id] = rannum
			player_b_heal[id] = random_num(5,10)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Regeneruje %i HP co kazde 5 sekund. Poloz Totem totem ktory bedzie leczyl wszystkich w zasiegu %i metrow.",player_item_name[id],player_b_heal[id],player_b_heal[id])	
		}
		case 24:
		{
			player_item_name[id] = "Krysztal Zyciodajnosci"
			player_item_id[id] = rannum
			player_b_heal[id] = random_num(10,20)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Regeneruje %i HP co kazde 5 sekund. Poloz Totem totem ktory bedzie leczyl wszystkich w zasiegu %i metrow.",player_item_name[id],player_b_heal[id],player_b_heal[id])	
		}
		case 25:
		{
			player_item_name[id] = "Krwisty Krysztal"
			player_item_id[id] = rannum
			player_b_heal[id] = random_num(20,40)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Regeneruje %i HP co kazde 5 sekund. Poloz Totem totem ktory bedzie leczyl wszystkich w zasiegu %i metrow.",player_item_name[id],player_b_heal[id],player_b_heal[id])	
		}
		case 26:
		{
			player_item_name[id] = "Amulet Sczescia"
			player_item_id[id] = rannum
			player_b_gamble[id] = random_num(2,3)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dostajesz +%i dodatkowa premie w kazdej rundzie",player_item_name[id],player_b_gamble[id])	
		}
		case 27:
		{
			player_item_name[id] = "Czterolistna Koniczyna"
			player_item_id[id] = rannum
			player_b_gamble[id] = random_num(4,5)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dostajesz +%i dodatkowa premie w kazdej rundzie",player_item_name[id],player_b_gamble[id])	
		}
		case 28:
		{
			player_item_name[id] = "Amulet Slonca"
			player_item_id[id] = rannum
			player_b_blind[id] = random_num(4,5)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans, aby oslepic twojego wroga",player_item_name[id],player_b_blind[id])	
		}
		case 29:
		{
			player_item_name[id] = "Miecz Slonca"
			player_item_id[id] = rannum
			player_b_blind[id] = random_num(2,3)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans, aby oslepic twojego wroga",player_item_name[id],player_b_blind[id])	
		}
		case 30:
		{
			player_item_name[id] = "Ognista Tarcza"
			player_item_id[id] = rannum
			player_b_fireshield[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Ochrania przed smiertelnym zabiciem od Granatow Wybuchowych i Kul Chaosu, lub Piekla.",player_item_name[id],player_b_fireshield[id])	
		}
		case 31:
		{
			player_item_name[id] = "Buty Harmonii"
			player_item_id[id] = rannum
			player_b_silent[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Twoje kroki sa stopniowo nieslyszalne.",player_item_name[id])	
		}
		case 32:
		{
			player_item_name[id] = "Kamien Zaskoczenia"
			player_item_id[id] = rannum
			player_b_meekstone[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Podloz falszywa bombe, ktora smiertelnie zabija wrogow.",player_item_name[id])	
		}
		case 33:
		{
			player_item_name[id] = "Helm Uzdrowiciela"
			player_item_id[id] = rannum
			player_b_teamheal[id] = random_num(10,20)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj na przyjacielu, aby uleczyc %i HP.",player_item_name[id],player_b_teamheal[id])	
		}
		case 34:
		{
			player_item_name[id] = "Totem Uzdrowiciela"
			player_item_id[id] = rannum
			player_b_teamheal[id] = random_num(20,30)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj na przyjacielu, aby uleczyc %i HP.",player_item_name[id],player_b_teamheal[id])	
		}
		case 35:
		{
			player_item_name[id] = "Zbroja z Zelaza"
			player_item_id[id] = rannum
			player_b_redirect[id] = random_num(5,10)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Twoj pancerz absoruje obrazenia o %i HP.",player_item_name[id],player_b_redirect[id])	
		}
		case 36:
		{
			player_item_name[id] = "Zbroja z Mithrilu"
			player_item_id[id] = rannum
			player_b_redirect[id] = random_num(10,15)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Twoj pancerz absoruje obrazenia o %i HP.",player_item_name[id],player_b_redirect[id])	
		}
		case 37:
		{
			player_item_name[id] = "Zbroja Boga Gromow"
			player_item_id[id] = rannum
			player_b_redirect[id] = random_num(15,20)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Twoj pancerz absoruje obrazenia o %i HP.",player_item_name[id],player_b_redirect[id])	
		}
		case 38:
		{
			player_item_name[id] = "Rozdzka Plomienia"
			player_item_id[id] = rannum
			player_b_fireball[id] = random_num(100,200)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Uszkadza wszystko w promieniu %i metrow Ognista Kula.",player_item_name[id],player_b_fireball[id])	
		}
		case 39:
		{
			player_item_name[id] = "Smocze Berlo"
			player_item_id[id] = rannum
			player_b_fireball[id] = random_num(200,400)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Uszkadza wszystko w promieniu %i metrow Ognista Kula.",player_item_name[id],player_b_fireball[id])	
		}
		case 40:
		{
			player_item_name[id] = "Plaszcz Zjawy"
			player_item_id[id] = rannum
			player_b_ghost[id] = random_num(5,10)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Mozesz przenikac przez sciany na czas %i sekund.",player_item_name[id],player_b_ghost[id])	
		}
		case 41:
		{
			player_item_name[id] = "Oko Magika Nikolasa"
			player_item_id[id] = rannum
			player_b_eye[id] = -1
			show_hudmessage(id, "Znalazles przedmiot: %s ::  Podloz magiczne oko w dowolnym miejscu i uzyj, zeby wlaczyc i wylaczyc.",player_item_name[id])	
		}
		case 42:
		{
			player_item_name[id] = "Kawalek Rubinu"
			player_item_id[id] = rannum
			player_b_blink[id] = floatround(halflife_time())
			show_hudmessage(id, "Znalazles przedmiot: %s :: W polaczeniu z nozem pozwala ci sie teleportowac co 3 sekundy.",player_item_name[id])	
		}
		case 43:
		{
			player_item_name[id] = "Plaszcz Krola Lotariana"
			player_item_id[id] = rannum
			player_b_windwalk[id] = random_num(5,10)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Mozesz stac sie niewidzialnym przez %i sekund i w tym czasie nie mozesz atakowac, ale za to szybko biegasz.",player_item_name[id],player_b_windwalk[id])	
		}
		case 44:
		{
			player_item_name[id] = "Miecz Rycerza"
			player_item_id[id] = rannum
			player_sword[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Miecz noszony przez Rycerzy. Zadaje wieksze obrazenia, niz noz.",player_item_name[id])		
		}
		case 45:
		{
			player_item_name[id] = "Czarodziejskie Buty"
			player_item_id[id] = rannum
			player_b_froglegs[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Kucnij na 3 sekundy, a zrobisz dlugi skok",player_item_name[id])	
		}
		case 46:
		{
			player_item_name[id] = "Oddech Smoka I"
			player_item_id[id] = rannum
			player_b_dagon[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Zaatakuj twojego przeciwnika Smoczym Ogniem",player_item_name[id])	
		}
		case 47:
		{
			player_item_name[id] = "Kamien Mocy Wiatrowki"
			player_item_id[id] = rannum
			player_b_sniper[id] = random_num(1,2)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans aby zabic smiertelnie wroga z Wiatrowki",player_item_name[id],player_b_sniper[id])	
		}
		case 48:
		{
			player_item_name[id] = "Wzmacniacz do Wiatrowki"
			player_item_id[id] = rannum
			player_b_sniper[id] = random_num(2,4)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans aby zabic smiertelnie wroga z Wiatrowki",player_item_name[id],player_b_sniper[id])	
		}
		case 49:
		{
			player_item_name[id] = "Aerodynamiczne Buty"
			player_item_id[id] = rannum
			player_b_jumpx[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Mozesz zrobic podwojny skok w powietrzu",player_item_name[id],player_b_sniper[id])	
		}
		case 50:
		{
			player_item_name[id] = "Granat Trujacy"
			player_item_id[id] = rannum
			player_b_smokehit[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Rzuc w wroga Granat Dymny. Jezeli on pojawi sie w zasiegu dymu, to zginie",player_item_name[id])	
		}
		case 51:
		{
			player_item_name[id] = "Wigor Wzmocnienia"
			player_item_id[id] = rannum
			player_b_extrastats[id] = random_num(5,15)
			BoostStats(id,player_b_extrastats[id])
			show_hudmessage(id, "Znalazles przedmiot: %s :: Zyskasz dodaktowe %i punktow do wszystkich statystyk",player_item_name[id],player_b_extrastats[id])	
		}
		case 52:
		{
			player_item_name[id] = "Totem Zaskoczenia"
			player_item_id[id] = rannum
			player_b_firetotem[id] = random_num(250,500)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Poloz totem, ktory wybucha po 7 sekundach i zaskoczy twoich wrogow.",player_item_name[id])	
		}
		case 53:
		{
			player_item_name[id] = "Hak Magii"
			player_item_id[id] = rannum
			player_b_hook[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Rzuc hak, aby przyciagnac przeciwnika do siebie",player_item_name[id])	
		}
		case 54:
		{
			player_item_name[id] = "Czarna Rekawica"
			player_item_id[id] = rannum
			player_b_darksteel[id] = random_num(5,20)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dodatkowe obrazenia, gdy zaatakujesz przeciwnika od tyłu",player_item_name[id])	
		}
		case 55:
		{
			player_item_name[id] = "Rekawica z Czarnej Stali"
			player_item_id[id] = rannum
			player_b_darksteel[id] = random_num(20,40)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dodatkowe obrazenia, gdy zaatakujesz przeciwnika od tyłu",player_item_name[id])	
		}
		case 56:
		{
			player_item_name[id] = "Plaszcz Illuzjonisty"
			player_item_id[id] = rannum
			player_b_illusionist[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Stan sie niewidoczny dla wszystkich.",player_item_name[id])	
		}
		case 57:
		{
			player_item_name[id] = "Krysztaly Eksplozji"
			player_item_id[id] = rannum
			player_b_mine[id] = 3
			show_hudmessage(id, "Znalazles przedmiot: %s :: Podloz 3 niewidzialne miny, aby zaskoczyc przeciwnika ich wybuchem.",player_item_name[id])
		}
 
		case 58:
		{
			player_item_name[id] = "Pierscien Ninjy"
			player_item_id[id] = rannum
			player_b_blink[id] = floatround(halflife_time())
			player_b_froglegs[id] = 1
			show_hudmessage(id, "Znalazles przedmiot: %s :: Mozesz sie teleportowac co 3 sekundy za pomoca noza i robic dlugie skoki co 3 sekundy",player_item_name[id])
		}
		case 59:	
		{
			player_item_name[id] = "Pierscien Maga"
			player_item_id[id] = rannum
			player_ring[id]=1
			player_b_fireball[id] = random_num(100,200)
			show_hudmessage(id, "Znalazles przedmiot : %s :: Dostajesz dodatkowe 5 punktow do Inteligencji i mozesz robic Ognista Kule.",player_item_name[id])
		}	
		case 60:	
		{
			player_item_name[id] = "Pierscien Nekromanty"
			player_item_id[id] = rannum
			player_b_respawn[id] = random_num(2,3)
			player_b_vampire[id] = random_num(5,12)	
			show_hudmessage(id, "Znalazles przedmiot : %s :: Masz szanse na ponowne odrodzenie sie i mozesz wysysac zycie wrogowi.",player_item_name[id])
		}
		case 61:
		{
			player_item_name[id] = "Pierscien Barbarzynca"
			player_item_id[id] = rannum
			player_b_explode[id] = random_num(200,400)
			player_ring[id]=2
			show_hudmessage(id, "Znalazles przedmiot : %s :: Dostajesz dodatkowe 5 punktow do Sily i jak umierasz, to eksplodujesz",player_item_name[id])
		}
		case 62:
		{
			player_item_name[id] = "Pierscien Paladyna"
			player_item_id[id] = rannum	
			player_b_redirect[id] = random_num(5,15)
			player_b_blind[id] = random_num(3,4)
			show_hudmessage(id, "Znalazles przedmiot : %s :: Twoj pancerz moze absorowac obrazenia, oraz masz szanse na oslepienie wroga.",player_item_name[id])		
		}
		case 63:
		{
			player_item_name[id] = "Pierscien Mnicha"
			player_item_id[id] = rannum	
			player_b_grenade[id] = random_num(2,3)
			player_b_heal[id] = random_num(20,40)
			show_hudmessage(id, "Znalazles przedmiot : %s :: Masz szanse na smiertelne zabicie z Granatu Wybuchowego. Twoje HP bedzie sie regenerowac co 5 sekund, gdy polozysz Totem na 7 sekund.",player_item_name[id])
		}	
		case 64:
		{
			player_item_name[id] = "Pierscien Zabojcy"
			player_item_id[id] = rannum
			player_b_jumpx[id] = 1
			player_ring[id]=3
			show_hudmessage(id, "Znalazles przedmiot : %s :: Dostajesz dodatkowe 5 punktow do zwinnosci. Mozesz takze zrobic podwojny skok w powietrzu",player_item_name[id])	
		}	
		case 65:
		{
			player_item_name[id] = "Amulet Bystrego Wzroku"	
			player_item_id[id] = rannum	
			wear_sun[id] = 1
			show_hudmessage (id, "Znalazles przedmiot : %s :: Jestes odporny na Granaty Oslepiajace.",player_item_name[id])
		}
		case 66:
		{
			player_item_name[id] = "Plaszcz ze skory Kameleona"	
			player_item_id[id] = 66	
			changeskin(id,0)  
			show_hudmessage (id, "Znalazles przedmiot : %s :: Skora kameleona powoduje, ze wygladasz jak twoj przeciwnik.",player_item_name[id])
		}
		case 67:
		{
			player_item_name[id] = "Zbroja ze Stali"	
			player_item_id[id] = 67	
			player_ultra_armor[id]=random_num(3,6)
			player_ultra_armor_left[id]=player_ultra_armor[id]
			show_hudmessage (id, "Znalazles przedmiot : %s :: Twoj pancerz moze odbic %i pociskow",player_item_name[id],player_ultra_armor[id])
		}
		case 68:
		{
			player_item_name[id] = "Zbroja z Adymentu"	
			player_item_id[id] = 68	
			player_ultra_armor[id]=random_num(7,11)
			player_ultra_armor_left[id]=player_ultra_armor[id]
			show_hudmessage (id, "Znalazles przedmiot : %s :: Twoj pancerz moze odbic %i pociskow",player_item_name[id],player_ultra_armor[id])
                }
		case 69:
		{
			player_item_name[id] = "Kurcze Piora"
			player_item_id[id] = rannum
			player_b_money[id] = random_num(10000,15000)
			show_hudmessage(id, "Znalazles przedmiot: %s :: Dostajesz %i zlota, co kazda runde. Absoruje takze obrazenia o polowe HP.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)	
                }
                case 70:
		{
			player_item_name[id] = "Anielskie Skrzydla"
			player_item_id[id] = rannum
			player_b_gravity[id] = random_num(10,10)
 
			if (is_user_alive(id))
				set_gravitychange(id)
 
			show_hudmessage(id, "Znalazles przedmiot: %s :: Skaczesz wyzej o %i punktow. Mozesz takze wywolywac trzesienie ziemi.",player_item_name[id],player_b_gravity[id])	
		}
 
	}
	BoostRing(id)
 
 
	return PLUGIN_CONTINUE
}
 
/* UNIQUE ITEMS ============================================================================================ */
//Names are generated from an array
 
public award_unique_item(id)
{
	new Unique_names_Suffix[10][100]
	new Unique_names_Prefix[10][100]
 
	Unique_names_Suffix[1] = "Swiety amulet"
	Unique_names_Suffix[2] = "Starozytny miecz"
	Unique_names_Suffix[3] = "Wielka rozdzka"
	Unique_names_Suffix[4] = "Blyszczacy helm"
	Unique_names_Suffix[5] = "Lsniace berlo"
 
	Unique_names_Prefix[1] = " Gwiazd"
	Unique_names_Prefix[2] = " Energii"
	Unique_names_Prefix[3] = " Zoda"
	Unique_names_Prefix[4] = " Zycia"
	Unique_names_Prefix[5] = " Slonca"
 
	//Generate the items name
 
	new roll_1 = random_num(1,5)
	new roll_2 = random_num(1,5)
 
	new Unique_name[100]
	add(Unique_name,99,Unique_names_Suffix[roll_1])
	add(Unique_name,99,Unique_names_Prefix[roll_2])
 
	player_item_name[id] = Unique_name
	player_item_id[id] = 100				
 
	//Generate and apply the stats
 
	if (roll_1 == 1) player_b_damage[id] = random_num(1,5)
	if (roll_1 == 2) player_b_vampire[id] = random_num(1,5)
	if (roll_1 == 3) player_b_money[id] = random_num(2500,5000)
	if (roll_1 == 4) player_b_reduceH[id] = random_num(20,50)
	if (roll_1 == 5) player_b_blind[id] = random_num(3,5)
 
 
 
	if (roll_2 == 1) player_b_grenade[id] = random_num(1,4)
	if (roll_2 == 2) player_b_respawn[id] = random_num(2,4)
	if (roll_2 == 3) player_b_explode[id] = random_num(150,400)
	if (roll_2 == 4) player_b_redirect[id] = random_num(5,10)
	if (roll_2 == 5) player_b_heal[id] = random_num(1,15)
 
	item_durability[id] = 350
 
	set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
	show_hudmessage(id, "Znalazles *Unikatowy* przedmiot: %s", Unique_name)
 
}
/* EFFECTS ================================================================================================= */
 
public add_damage_bonus(id,damage,attacker_id)
{
	if (player_b_damage[attacker_id] > 0 && get_user_health(id)>player_b_damage[attacker_id])
	{
		change_health(id,-player_b_damage[attacker_id],attacker_id,"")
 
		if (random_num(0,2) == 1) Effect_Bleed(id,248)
	}
}
 
/* ==================================================================================================== */
 
public add_vampire_bonus(id,damage,attacker_id)
{
	if (player_b_vampire[attacker_id] > 0)
	{
		change_health(attacker_id,player_b_vampire[attacker_id],0,"")
	}
}
 
/* ==================================================================================================== */
 
public add_money_bonus(id)
{
	if (player_b_money[id] > 0)
	{
		if (cs_get_user_money(id) < 16000 - player_b_money[id]+player_intelligence[id]*50) 
		{
			cs_set_user_money(id,cs_get_user_money(id)+ player_b_money[id]+player_intelligence[id]*50) 
		} 
		else 
		{
			cs_set_user_money(id,16000)
		}
	}
}
 
 
 
/* ==================================================================================================== */
 
public add_grenade_bonus(id,attacker_id,weapon)
{
        if (player_b_grenade[attacker_id] > 0 && weapon == CSW_HEGRENADE && player_b_fireshield[id] == 0)       //Fireshield check
        {
                new roll = random_num(1,player_b_grenade[attacker_id])
                if (roll == 1)
                {
                        UTIL_Kill(attacker_id,id, "weapon_hegrenade")
                }
        }
}
 
/* ==================================================================================================== */
 
public add_redhealth_bonus(id)
{
	if (player_b_reduceH[id] > 0)
		change_health(id,-player_b_reduceH[id],0,"")
	if(player_item_id[id]==17)	//stalker ring
		set_user_health(id,5)
}
 
/* ==================================================================================================== */
 
public add_theif_bonus(id,attacker_id)
{
	if (player_b_theif[attacker_id] > 0)
	{
		new roll1 = random_num(1,5)
		if (roll1 == 1)
		{
			if (cs_get_user_money(id) > player_b_theif[attacker_id])
			{
				cs_set_user_money(id,cs_get_user_money(id)-player_b_theif[attacker_id])
				if (cs_get_user_money(attacker_id) + player_b_theif[attacker_id] <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id)+player_b_theif[attacker_id])		
				}
			}
			else
			{
				new allthatsleft = cs_get_user_money(id)
				cs_set_user_money(id,0)
				if (cs_get_user_money(attacker_id) + allthatsleft <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id) + allthatsleft)			
				}
			}
		}
	}
}
 
/* ==================================================================================================== */
 
public add_respawn_bonus(id)
{
	if (player_b_respawn[id] > 0)
	{
		new svIndex[32] 
		num_to_str(id,svIndex,32)
		new roll = random_num(1,player_b_respawn[id])
		if (roll == 1)
		{
			new maxpl,players[32]
			get_players(players, maxpl) 
			if (maxpl > 2)
			{
				cs_set_user_money(id,cs_get_user_money(id)+4000)
				set_task(0.5,"respawn",0,svIndex,32) 		
			}
			else
			{
				set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
				show_hudmessage(id, "2 graczy musi grac w rundzie, aby moc sie ponownie odrodzic!")	
			}
 
		}
	}
}
 
public respawn(svIndex[]) 
{ 
	new vIndex = str_to_num(svIndex) 
	spawn(vIndex);
}
 
/* ==================================================================================================== */
 
public add_bonus_explode(id)
{
	if (player_b_explode[id] > 0)
	{
 
		new origin[3] 
		get_user_origin(id,origin) 
		explode(origin,id,0)
 
 
		for(new a = 0; a < MAX; a++) 
		{ 
			if (!is_user_connected(a) || !is_user_alive(a) || player_b_fireshield[a] != 0 ||  get_user_team(a) == get_user_team(id))
				continue	
 
			new origin1[3]
			get_user_origin(a,origin1) 
 
			if(get_distance(origin,origin1) < player_b_explode[id] + player_intelligence[id]*2)
			{
				new dam = 75-(player_dextery[a]*2)
				if(dam<1) dam=1
				change_health(a,-dam,id,"grenade")
				Display_Fade(id,2600,2600,0,255,0,0,15)				
			}
		}
	}
}
 
public explode(vec1[3],playerid, trigger)
{ 
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1) 
	write_byte( 21 ) 
	write_coord(vec1[0]) 
	write_coord(vec1[1]) 
	write_coord(vec1[2] + 32) 
	write_coord(vec1[0]) 
	write_coord(vec1[1]) 
	write_coord(vec1[2] + 1000)
	write_short( sprite_white ) 
	write_byte( 0 ) 
	write_byte( 0 ) 
	write_byte( 3 ) 
	write_byte( 10 ) 
	write_byte( 0 ) 
	write_byte( 188 ) 
	write_byte( 220 ) 
	write_byte( 255 ) 
	write_byte( 255 ) 
	write_byte( 0 ) 
	message_end() 
 
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte( 12 ) 
	write_coord(vec1[0]) 
	write_coord(vec1[1]) 
	write_coord(vec1[2]) 
	write_byte( 188 ) 
	write_byte( 10 ) 
	message_end() 
 
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1) 
	write_byte( 3 ) 
	write_coord(vec1[0]) 
	write_coord(vec1[1]) 
	write_coord(vec1[2]) 
	write_short( sprite_fire ) 
	write_byte( 65 ) 
	write_byte( 10 ) 
	write_byte( 0 ) 
	message_end() 
 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY,{0,0,0},playerid) 
	write_byte(107) 
	write_coord(vec1[0]) 
	write_coord(vec1[1]) 
	write_coord(vec1[2]) 
	write_coord(175) 
	write_short (sprite_gibs) 
	write_short (25)  
	write_byte (10) 
	message_end() 
	if (trigger == 1)
	{
		set_user_rendering(playerid,kRenderFxNone, 0,0,0, kRenderTransAdd,0) 
	}
}
 
/* ==================================================================================================== */
 
public add_bonus_gamble(id)
{	
	if (player_b_gamble[id] > 0 && is_user_alive(id))
	{
		new durba=item_durability[id]
		reset_item_skills(id)
		item_durability[id]=durba
		set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
		new roll = random_num(1,player_b_gamble[id])
		if (roll == 1)
		{
			show_hudmessage(id, "Premia rundy: 5 Dodatkowych obrazen do broni.")
			player_b_damage[id] = 5
		}
		if (roll == 2)
		{
			show_hudmessage(id, "Premia rundy: Dodatkowe 5 punktow do wyzszego skoku.")
			player_b_gravity[id] = 5
		}
		if (roll == 3)
		{
			show_hudmessage(id, "Premia rundy: Dodatkowe 5 obrazen do wysysania. ")
			player_b_vampire[id] = 5
		}
		if (roll == 4)
		{
			show_hudmessage(id, "Premia rundy: Leczacy o 10 HP Totem, na 5 sekund.")
			player_b_heal[id] = 10
		}
		if (roll == 5)
		{
			show_hudmessage(id, "Premia rundy: 1/3 szans na smiertelne zabicie z Granatu Wybuchowego")
			player_b_grenade[id] = 3
		}
	}
}
 
/* ==================================================================================================== */
 
public add_bonus_blind(id,attacker_id,weapon,damage)
{
	if (player_b_blind[attacker_id] > 0 && weapon != 4) 
	{
		if (random_num(1,player_b_blind[attacker_id]) == 1) Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230)		
	}
}
 
/* ==================================================================================================== */
 
public item_c4fake(id)
{ 
	if (c4state[id] > 1)
	{
		hudmsg(id,2.0,"Kamien Zaskoczenia mozesz uzyc raz na runde!")
		return PLUGIN_CONTINUE 
	}
 
	if (player_b_meekstone[id] > 0 && c4state[id] == 1 && is_user_alive(id) == 1 && freeze_ended == true)
	{
		explode(c4bombc[id],id,0)
 
		for(new a = 0; a < MAX; a++) 
		{ 
			if (is_user_connected(a) && is_user_alive(a))
			{			
				new origin1[3]
				get_user_origin(a,origin1) 
 
				if(get_distance(c4bombc[id],origin1) < 300 && get_user_team(a) != get_user_team(id))
				{
					UTIL_Kill(id,a,"grenade")
				}
			}
		}
 
		c4state[id] = 2
		remove_entity(c4fake[id])
		c4fake[id] = 0 
	}
 
	if (player_b_meekstone[id] > 0 && c4state[id] == 0 && c4fake[id] == 0 && is_user_alive(id) == 1 && freeze_ended == true)
	{
		new Float:pOrigin[3]
		entity_get_vector(id,EV_VEC_origin, pOrigin)
		c4fake[id] = create_entity("info_target")
 
		entity_set_model(c4fake[id],"models/w_backpack.mdl")
		entity_set_origin(c4fake[id],pOrigin)
		entity_set_string(c4fake[id],EV_SZ_classname,"fakec4")
		entity_set_edict(c4fake[id],EV_ENT_owner,id)
		entity_set_int(c4fake[id],EV_INT_movetype,6)
 
 
		new Float:aOrigin[3]
		entity_get_vector(c4fake[id],EV_VEC_origin, aOrigin)
		c4bombc[id][0] = floatround(aOrigin[0])
		c4bombc[id][1] = floatround(aOrigin[1])
		c4bombc[id][2] = floatround(aOrigin[2])
		c4state[id] = 1
	}
 
	return PLUGIN_CONTINUE 
}
 
/* ==================================================================================================== */
 
public item_fireball(id)
{
	if (fired[id] > 0)
	{
		hudmsg(id,2.0,"Ognista Kule mozesz wyczarowac raz na runde!")
		return PLUGIN_HANDLED
	}
 
	if (fired[id] == 0 && is_user_alive(id) == 1)
	{
		fired[id] = 1
		new Float:vOrigin[3]
		new fEntity
		entity_get_vector(id,EV_VEC_origin, vOrigin)
		fEntity = create_entity("info_target")
		entity_set_model(fEntity, "models/rpgrocket.mdl")
		entity_set_origin(fEntity, vOrigin)
		entity_set_int(fEntity,EV_INT_effects,64)
		entity_set_string(fEntity,EV_SZ_classname,"fireball")
		entity_set_int(fEntity, EV_INT_solid, SOLID_BBOX)
		entity_set_int(fEntity,EV_INT_movetype,5)
		entity_set_edict(fEntity,EV_ENT_owner,id)
 
 
 
		//Send forward
		new Float:fl_iNewVelocity[3]
		VelocityByAim(id, 800, fl_iNewVelocity)
		entity_set_vector(fEntity, EV_VEC_velocity, fl_iNewVelocity)
 
 
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
		write_byte(22) 
		write_short(fEntity) 
		write_short(sprite_beam) 
		write_byte(45) 
		write_byte(4) 
		write_byte(255) 
		write_byte(0) 
		write_byte(0) 
		write_byte(25)
		message_end() 
	}	
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
public add_bonus_redirect(id)
{
	if (player_b_redirect[id] > 0)
	{
		if (get_user_health(id)+player_b_redirect[id] <= race_heal[player_class[id]]+player_strength[id]*1)
		{
			change_health(id,player_b_redirect[id],0,"")
		}
 
	}
}
 
/* ==================================================================================================== */
 
public item_ghost(id)
{
	if (ghoststate[id] == 0 && player_b_ghost[id] > 0 && is_user_alive(id) && !ghost_check)
	{
		set_user_noclip(id,1)
		ghoststate[id] = 2
		ghosttime[id] = floatround(halflife_time())
		ghost_check = true
 
		message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
		write_byte( player_b_ghost[id]+1 ) 
		write_byte( 0 ) 
		message_end() 
	}
	else
	{
		hudmsg(id,3.0,"Umiejetnosc Ducha mozna uzyc tylko raz na runde!")
	}
}
 
/* ==================================================================================================== */
 
public add_bonus_darksteel(attacker,id,damage)
{
	if (player_b_darksteel[attacker] > 0)
	{
		if (UTIL_In_FOV(attacker,id) && !UTIL_In_FOV(id,attacker))
		{
 
			new dam = floatround (15+player_strength[id]*2*player_b_darksteel[id]/10.0)
 
			Effect_Bleed(id,248)
			change_health(id,-dam,attacker,"world")
		}
	}
}
 
/* ==================================================================================================== */
 
public item_eye(id)
{
	if (player_b_eye[id] == -1)
	{
		//place camera
		new Float:playerOrigin[3]
		entity_get_vector(id,EV_VEC_origin,playerOrigin)
		new ent = create_entity("info_target") 
		entity_set_string(ent, EV_SZ_classname, "PlayerCamera") 
		entity_set_int(ent, EV_INT_movetype, MOVETYPE_NOCLIP) 
		entity_set_int(ent, EV_INT_solid, SOLID_NOT) 
		entity_set_edict(ent, EV_ENT_owner, id)
		entity_set_model(ent, "models/rpgrocket.mdl")  				//Just something
		entity_set_origin(ent,playerOrigin)
		entity_set_int(ent,EV_INT_iuser1,0)		//Viewing through this camera						
		set_rendering (ent,kRenderFxNone, 0,0,0, kRenderTransTexture,0)
		entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) 
		player_b_eye[id] = ent
	}
	else
	{
		//view through camera or stop viewing
		new ent = player_b_eye[id]
		if (!is_valid_ent(ent))
		{
			attach_view(id,id)
			return PLUGIN_HANDLED
		}
		new viewing = entity_get_int(ent,EV_INT_iuser1)
 
		if (viewing) 
		{	
			entity_set_int(ent,EV_INT_iuser1,0)
			attach_view(id,id)
		}	
		else 
		{
			entity_set_int(ent,EV_INT_iuser1,1)
			attach_view(id,ent)
		}
	}
 
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
//Called when PlayerCamera thinks
public Think_PlayerCamera(ent)
{
	new id = entity_get_edict(ent,EV_ENT_owner)
 
	//Check if player is still having the item and is still online
	if (!is_valid_ent(id) || player_b_eye[id] == 0 || !is_user_connected(id))
	{
		//remove entity
		if (is_valid_ent(id) && is_user_connected(id)) attach_view(id,id)
		remove_entity(ent)
	}
	else
	{
		//Dont use cpu when not alive anyway or not viewing
		if (!is_user_alive(id))
		{
			entity_set_float(ent,EV_FL_nextthink,halflife_time() + 3.0) 
			return PLUGIN_HANDLED
		}
 
		if (!entity_get_int(ent,EV_INT_iuser1))
		{
			entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.5) 
			return PLUGIN_HANDLED
		}
 
		entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) 
 
		//Find nearest player to camera
		new Float:pOrigin[3],Float:plOrigin[3],Float:ret[3]
		entity_get_vector(ent,EV_VEC_origin,plOrigin)
		new Float:distrec = 2000.0, winent = -1
 
		for (new i=0; i<MAX; i++) 
		{
			if (is_user_connected(i) && is_user_alive(i))
			{
				entity_get_vector(i,EV_VEC_origin,pOrigin)
				pOrigin[2]+=10.0
				if (trace_line ( 0, plOrigin, pOrigin, ret ) == i && vector_distance(pOrigin,plOrigin) < distrec)
				{
					winent = i
					distrec = vector_distance(pOrigin,plOrigin)
				}
			}	
		}
 
		//Traceline and updown is still revresed
		if (winent > -1)
		{
			new Float:toplayer[3], Float:ideal[3],Float:pOrigin[3]
			entity_get_vector(winent,EV_VEC_origin,pOrigin)
			pOrigin[2]+=10.0
			toplayer[0] = pOrigin[0]-plOrigin[0]
			toplayer[1] = pOrigin[1]-plOrigin[1]
			toplayer[2] = pOrigin[2]-plOrigin[2]
			vector_to_angle ( toplayer, ideal ) 
			ideal[0] = ideal[0]*-1
			entity_set_vector(ent,EV_VEC_angles,ideal)
		}
	}
 
	return PLUGIN_CONTINUE
}
 
public Create_Line(id,origin1[3],origin2[3],bool:draw)
{
	if (draw)
	{
		message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id)
		write_byte(0)
		write_coord(origin1[0])	// starting pos
		write_coord(origin1[1])
		write_coord(origin1[2])
		write_coord(origin2[0])	// ending pos
		write_coord(origin2[1])
		write_coord(origin2[2])
		write_short(sprite_line)	// sprite index
		write_byte(1)		// starting frame
		write_byte(5)		// frame rate
		write_byte(2)		// life
		write_byte(3)		// line width
		write_byte(0)		// noise
		write_byte(255)	// RED
		write_byte(50)	// GREEN
		write_byte(50)	// BLUE					
		write_byte(155)		// brightness
		write_byte(5)		// scroll speed
		message_end()
	}
 
	new Float:ret[3],Float:fOrigin1[3],Float:fOrigin2[3]
	//So we dont hit ourself
	origin1[2]+=50
	IVecFVec(origin1,fOrigin1)
	IVecFVec(origin2,fOrigin2)
	new hit = trace_line ( 0, fOrigin1, fOrigin2, ret )
	return hit
 
}
 
/* ==================================================================================================== */
 
public Prethink_Blink(id)
{
	if( get_user_button(id) & IN_ATTACK2 && !(get_user_oldbutton(id) & IN_ATTACK2) && is_user_alive(id)) 
	{			
		if (on_knife[id])
		{
			if (halflife_time()-player_b_blink[id] <= 3) return PLUGIN_HANDLED		
			player_b_blink[id] = floatround(halflife_time())	
			UTIL_Teleport(id,300+15*player_intelligence[id])			
		}
	}
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
/*
Called on end or mapchange -- Save items for players
public plugin_end() 
{
	new Datafile[64], amxbasedir[64]
	//build_path(Datafile,63,"$basedir/diablo/datafile.txt") 
 
	get_basedir(amxbasedir,63)
	format(Datafile,63,"%s/diablo/datafile.txt",amxbasedir)
 
	if(file_exists(Datafile)) delete_file(Datafile)
 
	//Write name and item for each player
	for (new i=0; i < MAX; i++)
	{
		if (player_dc_item[i] > 0 && player_dc_item[i] != 100) //unique
		{
			new data[100]
			format(data,99,"%s^"%i^"",player_dc_name[i],player_dc_item[i])
			write_file(Datafile,data)
		}
	}
}
*/
 
/* ==================================================================================================== */
 
 
/* ==================================================================================================== */
 
 
 
/* ==================================================================================================== */
 
 
 
/* ==================================================================================================== */
 
public item_convertmoney(id)
{
	new maxhealth = race_heal[player_class[id]]+player_strength[id]*2
 
	if (cs_get_user_money(id) < 1000)
		hudmsg(id,2.0,"Nie masz wystarczajacej ilosci zlota, aby zamienic je w zycie!")
	else if (get_user_health(id) == maxhealth)
		hudmsg(id,2.0,"Masz maksymalna ilosc zycia")
	else
	{
		cs_set_user_money(id,cs_get_user_money(id)-1000)
		change_health(id,15,0,"")			
		Display_Fade(id,2600,2600,0,0,255,0,15)
	}
}
 
public item_windwalk(id)
{
	//First time this round
	if (player_b_usingwind[id] == 0)
	{
		new szId[10]
		num_to_str(id,szId,9)
		player_b_usingwind[id] = 1
 
		set_renderchange(id)
 
		engclient_cmd(id,"weapon_knife") 
		on_knife[id]=1
		set_user_maxspeed(id,500.0)
 
		new Float:val = player_b_windwalk[id] + 0.0
		set_task(val,"resetwindwalk",0,szId,32) 
 
		message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
		write_byte( player_b_windwalk[id]) 
		write_byte( 0 ) 
		message_end() 
	}
 
	//Disable again
	else if (player_b_usingwind[id] == 1)
	{
		player_b_usingwind[id] = 2
 
		set_renderchange(id)
 
		set_user_maxspeed(id,270.0)
		message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
		write_byte( 0) 
		write_byte( 0 ) 
		message_end() 
	}
 
	//Already used
	else if (player_b_usingwind[id] == 2)
	{
		set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
		show_hudmessage(id, "Ten przedmiot mozesz uzyc raz na runde!") 
	}
 
}
 
public resetwindwalk(szId[])
{
	new id = str_to_num(szId)
	if (id < 0 || id > MAX)
	{
		log_amx("Error in resetwindwalk, id: %i out of bounds", id)
	}
 
	if (player_b_usingwind[id] == 1)
	{
		player_b_usingwind[id] = 2
 
		set_renderchange(id)
 
		set_user_maxspeed(id,270.0)
		message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
		write_byte( 0) 
		write_byte( 0 ) 
		message_end() 
	}
 
}
 
/* ==================================================================================================== */
 
public Prethink_usingwind(id)
{
 
	if( get_user_button(id) & IN_ATTACK && is_user_alive(id))
	{
		new buttons = pev(id,pev_button)
		set_pev(id,pev_button,(buttons & ~IN_ATTACK));
		return FMRES_HANDLED;	
	}
 
	if( get_user_button(id) & IN_ATTACK2 && is_user_alive(id))
	{
		new buttons = pev(id,pev_button)
		set_pev(id,pev_button,(buttons & ~IN_ATTACK2));
		return FMRES_HANDLED;	
	}
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public cvar_result_func(id, const cvar[], const value[]) 
{ 
	player_b_oldsen[id] = str_to_float(value)
	new svIndex[32] 
	num_to_str(id,svIndex,32)
	set_task(2.5,"resetsens",0,svIndex,32) 		
 
 
}
 
public resetsens(svIndex[]) 
{ 
	new id = str_to_num(svIndex) 
 
	if (player_b_oldsen[id] > 0.0)
	{
		client_cmd(id,"sensitivity %f",player_b_oldsen[id])
		player_b_oldsen[id] = 0.0
	}
 
	message_begin( MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id ) 
	write_byte( 0 )     
	write_string( "dmg_chem") 
	write_byte( 100 ) // red 
	write_byte( 100 ) // green 
	write_byte( 100 ) // blue 
	message_end()  
 
 
} 
 
 
/* ==================================================================================================== */
 
public Prethink_confuseme(id)
{
	if (player_b_oldsen[id] > 0.0)
		client_cmd(id,"sensitivity %f", 25.0)
 
}
 
public Bot_Setup()
{
	for (new id=0; id < MAX; id++)
	{
		if (is_user_connected(id) && is_user_bot(id))
		{
			if (random_num(1,3) == 1 && player_item_id[id] > 0)
				client_cmd(id,"say /drop")
 
			while (player_point[id] > 0)
			{
				player_point[id]--
				switch(random_num(1,4))
				{
					case 1: {
						player_agility[id]++
					}
					case 2: {
						player_strength[id]++
					}
					case 3: {
						player_intelligence[id]++
					}
					case 4: {
						player_dextery[id]++
					}
				}
			}
		}
	}
}
 
/* ==================================================================================================== */
 
public host_killed(id)
{
	if (player_lvl[id] > 1)
	{
		hudmsg(id,2.0,"Ups! Straciles doswiadczenie za zabicie zakladnika.")
		Give_Xp(id,-floatround(3*player_lvl[id]/(1.65-player_lvl[id]/60)))
	}
 
}
 
 
/* ==================================================================================================== */
public show_menu_item(id)
{
	new text[513]
 
	format(text, 512, "\yLista Nowych Przedmiotow: ^n\w\r1. \wPierscien Maga^n\w\r2. \wPierscien Paladyna^n\w\r3. \wPierscien Mnicha^n\w\r4. \wPierscien Barbarzynca^n\w\r5. \wPierscien Zabojcy^n\w\r6. \wPierscien Nekromanty^n\w\r7. \wPierscien Ninjy^n\w\r8. \wAmulet Bystrego Wzroku^n\w\r9. \wZamknij") 
 
	new keys 
	keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)
	show_menu(id, keys, text, -1, "Lista Nowych Przedmiotow")
	return PLUGIN_HANDLED  
} 
 
public nowe_itemy(id, key) 
{ 
	switch(key) 
	{ 
		case 0: 
		{	
	      magring(id)
 
		}
		case 1: 
		{	
			paladynring(id)
		}
		case 2: 
		{	
			mnichring(id)
		}
		case 3:
		{
			barbarzyncaring(id)
		}
		case 4:
		{
			zabojcaring(id)
		}
		case 5:
		{
			nekromantaring(id)
		}
		case 6:
		{
			ninjaring(id)
		}
		case 7:
		{
			flashbangnecklace(id)
		}
		case 8:
		{
			return PLUGIN_HANDLED
		}
	}
 
	return PLUGIN_HANDLED
}
public magring(id)
{
showitem(id,"Pierscien Maga","Zwykla","Brak","<br>Dostajesz dodatkowe 5 punktow do Inteligencji.<br>Mozesz takze czarowac Ogniste Kule.<br><br>")
}
public paladynring(id)
{
showitem(id,"Pierscien Paladyna","Zwykla","Brak","<br>Twoj pancerz absoruje obrazenia o 5-15 HP.<br>Masz takze 1/3 lub 1/4 szans na oslepienie wroga.<br><br>")
}
public mnichring(id)
{
showitem(id,"Pierscien Mnicha","Zwykla","Brak","<br>Poloz totem na ziemie ktory bedzie leczyc 35 HP co 5 sek. na czas 7 sekund.<br>Masz takze 1/2 lub 1/3 szans na smiertelne zabicie wroga z Granatu Wybuchowego.<br><br>")
}
public barbarzyncaring(id)
{
showitem(id,"Pierscien Barbarzynca","Zwykla","Brak","<br>Dostajesz dodatkowe 5 punktow do Sily.<br>Gdy umierasz to wybuchasz.<br><br>")
}
public zabojcaring(id)
{
showitem(id,"Pierscien Zabojcy","Zwykla","Brak","<br>Dostajesz dodatkowe 5 punktow do Zwinnosci<br>Mozesz takze zrobic podwojny skok w powietrzu<br><br>")
}
public nekromantaring(id)
{
showitem(id,"Pierscien Nekromanty","Zwykla","Brak","<br>Masz 1/2 lub 1/3 szans na odrodzenie sie po smierci<br>Wysysasz takze 5-12 HP przeciwnikowi.<br><br>")
}
public ninjaring(id)
{
showitem(id,"Pierscien Ninjy","Zwykla","Brak","<br>Mozesz teleportowac sie co 3 sekundy za pomoca noza.<br>Mozesz takze wykonac dlugi skok, jak kucniesz na 3 sekundy<br><br>")
}
public flashbangnecklace(id)
{
showitem(id,"Amulet Bystrego Wzroku","Zwykla","Brak","<br>Jestes odporny na Granaty Oslepiajace<br><br>")
}
 
/* ==================================================================================================== */
 
 
public showmenu(id)
{
	new text[513] 
	new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9)
 
 
	format(text, 512, "\yMenu DiabloMod: ^n\w\r1. \wInformacje o aktualnym przedmiocie^n\w\r2. \wWyrzuc przedmiot^n\w\r3. \wPokaz pomoc^n\w\r4. \wUzyj przedmiot^n\w\r5. \wPokaz sklep^n\w\r6. \wInformacje o statystykach^n^n\w\r0. \wZamknij")
 
	show_menu(id, keys, text, -1, "Menu DiabloMod")
	return PLUGIN_HANDLED  
} 
 
 
public option_menu(id, key) 
{ 
	switch(key) 
	{ 
		case 0: 
		{	
			iteminfo(id)
 
		}
		case 1: 
		{	
			dropitem(id)
		}
		case 2: 
		{	
			helpme(id)
		}
		case 3:
		{
			Use_Spell(id)
		}
		case 4:
		{
			buyrune(id)
		}
		case 5:
		{
			showskills(id)
		}
		case 9:
		{
			return PLUGIN_HANDLED
		}
	}
 
	return PLUGIN_HANDLED
}
 
public Prethink_froglegs(id)
{
	if (get_user_button(id) & IN_DUCK)
	{
		//start holding down button here, set to halflife time
		if (player_b_froglegs[id] == 1) 
		{
			player_b_froglegs[id] = floatround(halflife_time())
		}
		else
		{
			if (floatround(halflife_time())-player_b_froglegs[id] >= 2.0)
			{
				new Float:fl_iNewVelocity[3]
				VelocityByAim(id, 1000, fl_iNewVelocity)
				fl_iNewVelocity[2] = 210.0
				entity_set_vector(id, EV_VEC_velocity, fl_iNewVelocity)
				player_b_froglegs[id] = 1
			}
		}
	}
	else
	{
		player_b_froglegs[id] = 1
	}
}
 
/* ==================================================================================================== */
 
public select_class_query(id)
{
	if(is_user_bot(id) || asked_klass[id]!=0) return PLUGIN_HANDLED
	if(loaded_xp[id]==0)
	{
		load_xp(id)
		return PLUGIN_HANDLED
	}
 
	if(g_boolsqlOK)
	{
		asked_klass[id]=1
		new name[64]
		new data[1]
		data[0]=id
		new lx[9]
		if(player_class_lvl_save[id]==0)
		{
			if(get_cvar_num("diablo_sql_save")==0)
			{
				get_user_name(id,name,63)
				replace_all ( name, 63, "'", "Q" )
				replace_all ( name, 63, "`", "Q" )
 
				new q_command[512]
				format(q_command,511,"SELECT `klasa`,`lvl` FROM `%s` WHERE `nick`='%s' ",g_sqlTable,name)
				SQL_ThreadQuery(g_SqlTuple,"select_class_handle", q_command,data,1)
			}
			else if(get_cvar_num("diablo_sql_save")==1)
			{
				get_user_ip(id, name ,63,1)
				new q_command[512]
				format(q_command,511,"SELECT `klasa`,`lvl` FROM `%s` WHERE `ip`='%s' ",g_sqlTable,name)
				SQL_ThreadQuery(g_SqlTuple,"select_class_handle",q_command,data,1)
			}
			else if(get_cvar_num("diablo_sql_save")==2)
			{
				get_user_authid(id, name ,63)
				new q_command[512]
				format(q_command,511,"SELECT `klasa`,`lvl` FROM `%s` WHERE `sid`='%s' ",g_sqlTable,name)
				SQL_ThreadQuery(g_SqlTuple,"select_class_handle",q_command,data,1)
			}
		/*
 
			if(ret == RESULT_FAILED)
			{
				new szError[126]
				dbi_error(sql,szError,125)
				log_to_file("addons/amxmodx/logs/diablo.log","[Command Log] nie moglem wczytac lvl'i dla %s | klasy :*** %s",name,szError)
				dbi_free_result(ret)
				g_boolsqlOK=0
				player_class_lvl_save[id]=0
				dbi_close(sql)
				return PLUGIN_HANDLED
			}
			else if(ret == RESULT_NONE)
			{
				log_to_file("addons/amxmodx/logs/diablo.log","[Command Log] nie ma danych dla /klasa")
				create_klass(id)
				return PLUGIN_HANDLED
			}
			else while(ret && dbi_nextrow(ret)>0)
			{
				new i = dbi_result(ret, "klasa")
				lx[i] = dbi_result(ret, "lvl")
				player_class_lvl[id][i] = lx[i]
			}
			dbi_free_result(ret)
			player_class_lvl_save[id]=1
		*/
		}
		else
		{
			for(new i=1;i<9;i++) lx[i]=player_class_lvl[id][i]
			select_class(id,lx)
		}
 
	}
	else sql_start()
 
	return PLUGIN_HANDLED  
} 
 
public select_class_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	new id=Data[0]
	if(Errcode)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Error on select_class_handle query: %s",Error)
		asked_klass[id]=0
	}
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.")
		asked_klass[id]=0
		return PLUGIN_CONTINUE
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_to_file("addons/amxmodx/logs/diablo.log","select_class_handle Query failed.")
		asked_klass[id]=0
		return PLUGIN_CONTINUE
	}	 	
 
	if(SQL_MoreResults(Query))
	{
		new lx[9]
 
		while(SQL_MoreResults(Query))
		{
			new i = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "klasa"))
			lx[i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "lvl"))
			player_class_lvl[id][i] = lx[i]
			SQL_NextRow(Query)
		}
 
		if(asked_klass[id]==1)
		{
			asked_klass[id]=2
			select_class(id,lx)
		}
 
	}
	return PLUGIN_CONTINUE
}
 
public select_class(id,lx[])
{
	if(is_user_bot(id)) return
	new flags[10]
	get_cvar_string("diablo_classes",flags,9)
	new text[512]
	new keys = read_flags(flags)
 
	asked_klass[id]=0
 
	format(text, 511,"\yWybierz Klase postaci: ^n")
 
	for(new i=0;i<8;i++)
	{
		format(text, 511,"%s%s%d. %s | Poziom %d ^n",text,(keys)&(1<<i)?"\w":"\d",i+1,Race[i+1], lx[i+1])
	}
 
	show_menu(id, keys, text, -1, "Wybierz Klase postaci")
}
 
public select_class_menu(id, key) 
{ 
	g_haskit[id] = 0
	switch(key) 
	{ 
		case 0: 
		{	
			player_class[id] = Mag			
		}
		case 1: 
		{	
			player_class[id] = Mnich
		}
		case 2: 
		{	
			player_class[id] =  Paladyn
		}
		case 3: 
		{	
			player_class[id] = Zabojca
		}
		case 4: 
		{			
			player_class[id] = Nekromanta
			g_haskit[id] = 1
		}
		case 5: 
		{	
			player_class[id] = Barbarzynca			
		}
		case 6: 
		{	
			player_class[id] = Ninja
		}
		case 7: 
		{	
			player_class[id] = Hunter
			g_GrenadeTrap[id] = 1
		}	
	}
 
	LoadXP(id, player_class[id])
	CurWeapon(id)
 
	give_knife(id)
 
	return PLUGIN_HANDLED
} 
 
/* ==================================================================================================== */
public check_class()
{
	for (new id=0; id < 33; id++)
	{
  		if((player_class[id] == Ninja) && (is_user_connected(id)))
		{
 
 
			if (is_user_alive(id)) set_user_armor(id,100)	
		}
		set_gravitychange(id)
		set_renderchange(id)
	}
}
 
 
/* ==================================================================================================== */
 
public add_barbarian_bonus(id)
{
	if (player_class[id] == Barbarzynca)
	{	
		change_health(id,20,0,"")
	}
}
 
/* ==================================================================================================== */
 
public add_bonus_necromancer(attacker_id,id)
{
	if (player_class[attacker_id] == Nekromanta)
	{
		if (get_user_health(id) - 10 <= 0)
		{
			set_user_health(id,random_num(1,3))
		}
		else
		{
			new dmg = random_num(6,12)
			change_health(id,-dmg,0,"")
			change_health(attacker_id,1,0,"")
		}
	}
}
 
/* ==================================================================================================== */
 
//What modules are required
public plugin_modules()
{
	require_module("engine")
	require_module("cstrike")
	require_module("fun")
	require_module("fakemeta")
}
 
/* ==================================================================================================== */
 
//Find the nearest alive opponent in our view
public UTIL_FindNearestOpponent(id,maxdist)
{
	new best = 99999
	new entfound = -1
	new MyOrigin[3]
	get_user_origin(id,MyOrigin)
 
	for (new i=1; i < MAX; i++)
	{
		if (i == id || !is_user_connected(i) || !is_user_alive(i) || get_user_team(id) == get_user_team(i))
			continue
 
		new TempOrigin[3],Float:fTempOrigin[3]
		get_user_origin(i,TempOrigin)
		IVecFVec(TempOrigin,fTempOrigin)
 
		if (!UTIL_IsInView(id,i))
			continue
 
 
		new dist = get_distance ( MyOrigin,TempOrigin ) 
 
		if ( dist < maxdist && dist < best)
		{
			best = dist
			entfound = i
		}		
	}
 
	return entfound
}
 
/* ==================================================================================================== */
 
//Basicly see's if we can draw a straight line to the target without interference
public bool:UTIL_IsInView(id,target)
{
	new Float:IdOrigin[3], Float:TargetOrigin[3], Float:ret[3] 
	new iIdOrigin[3], iTargetOrigin[3]
 
	get_user_origin(id,iIdOrigin,1)
	get_user_origin(target,iTargetOrigin,1)
 
	IVecFVec(iIdOrigin,IdOrigin)
	IVecFVec(iTargetOrigin, TargetOrigin)
 
	if ( trace_line ( 1, IdOrigin, TargetOrigin, ret ) == target)
		return true
 
	if ( get_distance_f(TargetOrigin,ret) < 10.0)
		return true
 
	return false
 
}
/* ==================================================================================================== */
 
public item_dagon(id)
{
	if (player_b_dagfired[id])
	{
		set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
		show_hudmessage(id, "Oddechem Smoka mozesz zaatakowac raz na runde!") 
		return PLUGIN_HANDLED
	}
	//Target nearest non-friendly player
	new target = UTIL_FindNearestOpponent(id,600+player_intelligence[id]*20)
 
	if (target == -1) 
		return PLUGIN_HANDLED
 
	new DagonDamage = player_b_dagon[id]*20
	new Red = 0
 
	if (player_b_dagon[id] == 1) Red = 175
	else if (player_b_dagon[id] == 2) Red = 225
	else if (player_b_dagon[id] > 2) Red = 255
 
 
	//Dagon damage done is reduced by the targets dextery
	DagonDamage-=player_dextery[target]*2
 
	if (DagonDamage < 0)
		DagonDamage = 0
 
	new Hit[3]
	get_user_origin(target,Hit)
 
	//Create Lightning
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(1) // TE_BEAMENTPOINT
	write_short(id)
	write_coord(Hit[0])
	write_coord(Hit[1])
	write_coord(Hit[2])
	write_short(sprite_lgt)
	write_byte(0)
	write_byte(1)
	write_byte(3)
	write_byte(10)	//WITD
	write_byte(60)
	write_byte(Red)
	write_byte(0)
	write_byte(0)
	write_byte(100)	//BRIGT
	write_byte(0)
	message_end()
 
	player_b_dagfired[id] = true
 
	//Apply damage
 
	change_health(target,-DagonDamage,id,"world")
	Display_Fade(target,2600,2600,0,255,0,0,15)
	hudmsg(id,2.0,"Twoj Smoczy Oddech zadal %i, %i obrazen.", DagonDamage, player_dextery[target]*2)
 
	return PLUGIN_HANDLED
 
 
}
 
/* ==================================================================================================== */
 
/* ==================================================================================================== */
 
//Will return 1 if user has amount of money and then substract
public bool:UTIL_Buyformoney(id,amount)
{
	if (cs_get_user_money(id) >= amount)
	{
		cs_set_user_money(id,cs_get_user_money(id)-amount)
		return true
	}
	else
	{
		hudmsg(id,2.0,"Nie masz wystarczajacej ilosci zlota!")
		return false
	}
 
	return false
}
public buyrune(id)
{
	new text[513] 
 
	format(text, 512, "\ySklep z Wyposazeniem: ^n\w\r1. \wUlepsz Przedmiot - \r$9000^n\w\r2. \wKup losowy Przedmiot - \r$5000^n\w\r3. \wKup doswiadczenie - \r$12000^n^n\w\r0. \wZamknij")
 
	new keys = (1<<0)|(1<<1)|(1<<2)|(1<<9)
	show_menu(id, keys, text, -1, "Sklep z wyposazeniem")
	return PLUGIN_HANDLED  
} 
 
 
public select_rune_menu(id, key) 
{ 
	switch(key) 
	{ 
		case 0: 
		{
			if (!UTIL_Buyformoney(id,9000))
				return PLUGIN_HANDLED
 
			upgrade_item(id)
		}
		case 1: 
		{	
			if (!UTIL_Buyformoney(id,5000))
				return PLUGIN_HANDLED
			award_item(id,0)
			return PLUGIN_HANDLED
		}
		case 2:
		{
			if (!UTIL_Buyformoney(id,12000))
				return PLUGIN_HANDLED
			new exp = get_cvar_num("diablo_xpbonus")*random_num(3,10)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/20
			Give_Xp(id,exp)
			client_print(id,print_center,"Dostales %d pkt. doswiadczenia!",exp)
			return PLUGIN_HANDLED
		}
		case 9: 
		{	
			return PLUGIN_HANDLED
		}
 
 
	}
 
	return PLUGIN_HANDLED
}
 
public upgrade_item(id)
{
	if(item_durability[id]>0) item_durability[id] += random_num(-50,50)
	if(item_durability[id]<1)
	{
		dropitem(id)
		return
	}
	if(player_b_jumpx[id]>0) player_b_jumpx[id] += random_num(0,1)
 
	if(player_b_vampire[id]>0)
	{
		if(player_b_vampire[id]>20) player_b_vampire[id] += random_num(-1,2)
		else if(player_b_vampire[id]>10) player_b_vampire[id] += random_num(0,2)
		else player_b_vampire[id]+= random_num(1,3)
	}
	if(player_b_damage[id]>0) player_b_damage[id] += random_num(0,3) 
	if(player_b_money[id]!=0) player_b_money[id]+= random_num(-100,300)	
	if(player_b_gravity[id]>0)
	{
		if(player_b_gravity[id]<3) player_b_gravity[id]+=random_num(0,2)
		else if(player_b_gravity[id]<5) player_b_gravity[id]+=random_num(1,3)
		else if(player_b_gravity[id]<8) player_b_gravity[id]+=random_num(-1,3)
		else if(player_b_gravity[id]<10) player_b_gravity[id]+=random_num(0,1)
	}
	if(player_b_inv[id]>0)
	{
		if(player_b_inv[id]>200) player_b_inv[id]-=random_num(0,50)
		else if(player_b_inv[id]>100) player_b_inv[id]-=random_num(-25,50)
		else if(player_b_inv[id]>50) player_b_inv[id]-=random_num(-10,20)
		else if(player_b_inv[id]>25) player_b_inv[id]-=random_num(-10,10)
	}
	if(player_b_grenade[id]>0)
	{
		if(player_b_grenade[id]>4) player_b_grenade[id]-=random_num(0,2)
		else if(player_b_grenade[id]>2) player_b_grenade[id]-=random_num(0,1)
		else if(player_b_grenade[id]==2) player_b_grenade[id]-=random_num(-1,1)
	}
	if(player_b_reduceH[id]>0) player_b_reduceH[id]-=random_num(0,player_b_reduceH[id])
	if(player_b_theif[id]>0) player_b_theif[id] += random_num(0,250)
	if(player_b_respawn[id]>0)
	{
		if(player_b_respawn[id]>2) player_b_respawn[id]-=random_num(0,1)
		else if(player_b_respawn[id]>1) player_b_respawn[id]-=random_num(-1,1)
	}
	if(player_b_explode[id]>0)player_b_explode[id] += random_num(0,50)
	if(player_b_heal[id]>0)
	{
		if(player_b_heal[id]>20) player_b_heal[id]+= random_num(-1,3)
		else if(player_b_heal[id]>10) player_b_heal[id]+= random_num(0,4)
		else player_b_heal[id]+= random_num(2,6)
	}
	if(player_b_blind[id]>0)
	{
		if(player_b_blind[id]>5) player_b_blind[id]-= random_num(0,2)
		else if(player_b_blind[id]>1) player_b_blind[id]-= random_num(0,1)
	}
 
	if(player_b_teamheal[id]>0) player_b_teamheal[id] += random_num(0,5)
 
	if(player_b_redirect[id]>0) player_b_redirect[id]+= random_num(0,2)
	if(player_b_fireball[id]>0) player_b_fireball[id]+= random_num(0,33)
	if(player_b_ghost[id]>0) player_b_ghost[id]+= random_num(0,1)
	if(player_b_windwalk[id]>0) player_b_windwalk[id] += random_num(0,1)
 
	if(player_b_dagon[id]>0) player_b_dagon[id] += random_num(0,1)
	if(player_b_sniper[id]>0)
	{
		if(player_b_sniper[id]>5) player_b_sniper[id]-=random_num(0,2)
		else if(player_b_sniper[id]>2) player_b_sniper[id]-=random_num(0,1)
		else if(player_b_sniper[id]>1) player_b_sniper[id]-=random_num(-1,1)
	}
 
	if(player_b_extrastats[id]>0) player_b_extrastats[id] += random_num(0,2)
	if(player_b_firetotem[id]>0) player_b_firetotem[id] += random_num(0,50)
 
	if(player_b_darksteel[id]>0) player_b_darksteel[id] += random_num(0,2)
	if(player_b_mine[id]>0) player_b_mine[id] += random_num(0,1)
	if(player_sword[id]>0)
	{
		if(player_b_jumpx[id]==0 && random_num(0,10)==10) player_b_jumpx[id]=1
		if(player_b_vampire[id]==0 && random_num(0,10)==10) player_b_vampire[id]=1
		if(player_b_gravity[id]==0 && random_num(0,10)==10) player_b_gravity[id]=1
		if(player_b_respawn[id]==0 && random_num(0,10)==5) player_b_respawn[id]=15
		else if(player_b_respawn[id]>2 && random_num(0,10)==5) player_b_respawn[id]+=random_num(0,1)
		if(player_b_ghost[id]==0 && random_num(0,10)==10) player_b_ghost[id]=1
		if(player_b_darksteel[id]==0 && random_num(0,10)==10) player_b_darksteel[id]=1
	}
	if(player_ultra_armor[id]>0) player_ultra_armor[id]++
 
}
 
/* ==================================================================================================== */
 
//Blocks fullupdate (can reset hud)
public fullupdate(id) 
{
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
public add_bonus_scoutdamage(attacker_id,id,weapon)
{
	if (player_b_sniper[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && weapon == CSW_SCOUT && player_class[attacker_id]!=Ninja)
	{
 
		if (!is_user_alive(id))
			return PLUGIN_HANDLED
 
		if (random_num(1,player_b_sniper[attacker_id]) == 1)
			UTIL_Kill(attacker_id,id,"scout")
 
	}
 
	return PLUGIN_HANDLED
}
 
/* ==================================================================================================== */
 
public add_bonus_illusion(attacker_id,id,weapon)
{
	if(HasFlag(id,Flag_Illusion))
	{
		new weaponname[32]
		get_weaponname( weapon, weaponname, 31 ) 
		replace(weaponname, 31, "weapon_", "")
		UTIL_Kill(attacker_id,id,weaponname)
	}
}
 
/* ==================================================================================================== */
 
public item_take_damage(id,damage)
{
	new itemdamage = get_cvar_num("diablo_durability")
 
	if (player_item_id[id] > 0 && item_durability[id] >= 0 && itemdamage> 0 && damage > 5)
	{
		//Make item take damage
		if (item_durability[id] - itemdamage <= 0)
		{
			item_durability[id]-=itemdamage
			dropitem(id)
		}
		else
		{
			item_durability[id]-=itemdamage
		}
 
	}
}
 
/* ==================================================================================================== */
 
//From twistedeuphoria plugin
public Prethink_Doublejump(id)
{
	if(!is_user_alive(id)) 
		return PLUGIN_HANDLED
 
	if((get_user_button(id) & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(get_user_oldbutton(id) & IN_JUMP))
	{
		if(jumps[id] < player_b_jumpx[id])
		{
			dojump[id] = true
			jumps[id]++
			return PLUGIN_HANDLED
		}
	}
	if((get_user_button(id) & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
	{
		jumps[id] = 0
		return PLUGIN_CONTINUE
	}
 
	return PLUGIN_HANDLED
}
 
public Postthink_Doubeljump(id)
{
	if(!is_user_alive(id)) 
		return PLUGIN_HANDLED
 
	if(dojump[id] == true)
	{
		new Float:velocity[3]	
		entity_get_vector(id,EV_VEC_velocity,velocity)
		velocity[2] = random_float(265.0,285.0)
		entity_set_vector(id,EV_VEC_velocity,velocity)
		dojump[id] = false
		return PLUGIN_CONTINUE
	}
 
	return PLUGIN_HANDLED
}
 
 
/* ==================================================================================================== */
 
public eventGrenade(id) 
{
	new id = read_data(1)
	if (player_b_grenade[id] > 0 || player_b_smokehit[id] > 0)
	{
		set_task(0.1, "makeGlow", id)
	}
}
 
public makeGlow(id) 
{
	new grenade
	new greModel[100]
	grenade = get_grenade(id) 
 
	if( grenade ) 
	{	
		entity_get_string(grenade, EV_SZ_model, greModel, 99)
 
		if(equali(greModel, "models/w_hegrenade.mdl" ) && player_b_grenade[id] > 0 )	
			set_rendering(grenade, kRenderFxGlowShell, 255,0,0, kRenderNormal, 255)
 
		if(equali(greModel, "models/w_smokegrenade.mdl" ) && player_b_smokehit[id] > 0 )	
		{
			set_rendering(grenade, kRenderFxGlowShell, 0,255,255, kRenderNormal, 255)
		}
	}
}
 
/* ==================================================================================================== */
 
public BoostStats(id,amount)
{
	player_strength[id]+=amount
	player_dextery[id]+=amount
	player_agility[id]+=amount
	player_intelligence[id]+=amount
}
 
public SubtractStats(id,amount)
{
	player_strength[id]-=amount
	player_dextery[id]-=amount
	player_agility[id]-=amount
	player_intelligence[id]-=amount
}
 
public BoostRing(id)
{
	switch(player_ring[id])
	{
		case 1: player_intelligence[id]+=5
		case 2: player_strength[id]+=5
		case 3: player_agility[id]+=5
	}
}
 
public SubtractRing(id)
{
	switch(player_ring[id])
	{
		case 1: player_intelligence[id]-=5
		case 2: player_strength[id]-=5
		case 3: player_agility[id]-=5
	}
}
 
/* ==================================================================================================== */
 
public SelectBotRace(id)
{
	if (!is_user_bot(id))
		return PLUGIN_HANDLED
 
 
 
	if (player_class[id] == 0)
	{
		player_class[id] = random_num(1,7)
		//load_xp(id)
	}
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public showskills(id)
{
	new Skillsinfo[768]
	format(Skillsinfo,767,"Masz %i Sily - Daje tobie dodatkowe %i HP<br><br>Masz %i zwinnosci - szybciej biegasz o %i procent i absorujesz ataki magiczne o %i%%<br><br>Masz %i zrecznosci - Absorujesz ataki fizyczne o %0.0f%%<br><br>Masz %i inteligencji - To masz wieksza moc, do uzycia przedmiotow",
	player_strength[id],
	player_strength[id]*2,
	player_dextery[id],
	floatround(player_dextery[id]*1.3),
	player_dextery[id]*3,
	player_agility[id],
	player_damreduction[id]*100,
	player_intelligence[id])
 
	showitem(id,"Statystyki","Brak","Brak", Skillsinfo)
}
 
/* ==================================================================================================== */
 
public UTIL_Teleport(id,distance)
{	
	Set_Origin_Forward(id,distance)
 
	new origin[3]
	get_user_origin(id,origin)
 
	//Particle burst ie. teleport effect	
	message_begin(MSG_BROADCAST ,SVC_TEMPENTITY) //message begin
	write_byte(TE_PARTICLEBURST )
	write_coord(origin[0]) // origin
	write_coord(origin[1]) // origin
	write_coord(origin[2]) // origin
	write_short(20) // radius
	write_byte(1) // particle color
	write_byte(4) // duration * 10 will be randomized a bit
	message_end()
 
 
}
 
stock Set_Origin_Forward(id, distance) 
{
	new Float:origin[3]
	new Float:angles[3]
	new Float:teleport[3]
	new Float:heightplus = 10.0
	new Float:playerheight = 64.0
	new bool:recalculate = false
	new bool:foundheight = false
	pev(id,pev_origin,origin)
	pev(id,pev_angles,angles)
 
	teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
	teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
	teleport[2] = origin[2]+heightplus
 
	while (!Can_Trace_Line_Origin(origin,teleport) || Is_Point_Stuck(teleport,48.0))
	{	
		if (distance < 10)
			break;
 
		//First see if we can raise the height to MAX playerheight, if we can, it's a hill and we can teleport there	
		for (new i=1; i < playerheight+20.0; i++)
		{
			teleport[2]+=i
			if (Can_Trace_Line_Origin(origin,teleport) && !Is_Point_Stuck(teleport,48.0))
			{
				foundheight = true
				heightplus += i
				break
			}
 
			teleport[2]-=i
		}
 
		if (foundheight)
			break
 
		recalculate = true
		distance-=10
		teleport[0] = origin[0] + (distance+32) * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
		teleport[1] = origin[1] + (distance+32) * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
		teleport[2] = origin[2]+heightplus
	}
 
	if (!recalculate)
	{
		set_pev(id,pev_origin,teleport)
		return PLUGIN_CONTINUE
	}
 
	teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
	teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
	teleport[2] = origin[2]+heightplus
	set_pev(id,pev_origin,teleport)
 
	return PLUGIN_CONTINUE
}
 
stock bool:Can_Trace_Line_Origin(Float:origin1[3], Float:origin2[3])
{	
	new Float:Origin_Return[3]	
	new Float:temp1[3]
	new Float:temp2[3]
 
	temp1[x] = origin1[x]
	temp1[y] = origin1[y]
	temp1[z] = origin1[z]-30
 
	temp2[x] = origin2[x]
	temp2[y] = origin2[y]
	temp2[z] = origin2[z]-30
 
	trace_line(-1, temp1, temp2, Origin_Return) 
 
	if (get_distance_f(Origin_Return,temp2) < 1.0)
		return true
 
	return false
}
 
stock bool:Is_Point_Stuck(Float:Origin[3], Float:hullsize)
{
	new Float:temp[3]
	new Float:iterator = hullsize/3
 
	temp[2] = Origin[2]
 
	for (new Float:i=Origin[0]-hullsize; i < Origin[0]+hullsize; i+=iterator)
	{
		for (new Float:j=Origin[1]-hullsize; j < Origin[1]+hullsize; j+=iterator)
		{
			//72 mod 6 = 0
			for (new Float:k=Origin[2]-CS_PLAYER_HEIGHT; k < Origin[2]+CS_PLAYER_HEIGHT; k+=6) 
			{
				temp[0] = i
				temp[1] = j
				temp[2] = k
 
				if (point_contents(temp) != -1)
					return true
			}
		}
	}
 
	return false
}
 
stock Effect_Bleed(id,color)
{
	new origin[3]
	get_user_origin(id,origin)
 
	new dx, dy, dz
 
	for(new i = 0; i < 3; i++) 
	{
		dx = random_num(-15,15)
		dy = random_num(-15,15)
		dz = random_num(-20,25)
 
		for(new j = 0; j < 2; j++) 
		{
			message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte(TE_BLOODSPRITE)
			write_coord(origin[0]+(dx*j))
			write_coord(origin[1]+(dy*j))
			write_coord(origin[2]+(dz*j))
			write_short(sprite_blood_spray)
			write_short(sprite_blood_drop)
			write_byte(color) // color index
			write_byte(8) // size
			message_end()
		}
	}
}
 
/* ==================================================================================================== */
 
public Use_Spell(id)
{
	if (player_global_cooldown[id] + GLOBAL_COOLDOWN >= halflife_time())
		return PLUGIN_CONTINUE
	else
		player_global_cooldown[id] = halflife_time()
 
	if (!is_user_alive(id) || !freeze_ended)
		return PLUGIN_CONTINUE
 
	/*See if USE button is used for anything else..
	1) Close to bomb
	2) Close to hostage
	3) Close to switch
	4) Close to door
	*/
 
	new Float:origin[3]
	pev(id, pev_origin, origin)
 
	//Func door and func door rotating
	new aimid, body
	get_user_aiming ( id, aimid, body ) 
 
	if (aimid > 0)
	{
		new classname[32]
		pev(aimid,pev_classname,classname,31)
 
		if (equal(classname,"func_door_rotating") || equal(classname,"func_door") || equal(classname,"func_button"))
		{
			new Float:doororigin[3]
			pev(aimid, pev_origin, doororigin)
 
			if (get_distance_f(origin, doororigin) < 70 && UTIL_In_FOV(id,aimid))
				return PLUGIN_CONTINUE
		}
 
	}
 
	//Bomb condition
	new bomb
	if ((bomb = find_ent_by_model(-1, "grenade", "models/w_c4.mdl"))) 
	{
		new Float:bombpos[3]
		pev(bomb, pev_origin, bombpos)
 
		//We are near the bomb and have it in FOV.
		if (get_distance_f(origin, bombpos) < 100 && UTIL_In_FOV(id,bomb))
			return PLUGIN_CONTINUE
	}
 
 
	//Hostage
	new hostage = engfunc(EngFunc_FindEntityByString, -1,"classname", "hostage_entity")
 
	while (hostage)
	{
		new Float:hospos[3]
		pev(hostage, pev_origin, hospos)
		if (get_distance_f(origin, hospos) < 70 && UTIL_In_FOV(id,hostage))
			return PLUGIN_CONTINUE
 
		hostage = engfunc(EngFunc_FindEntityByString, hostage,"classname", "hostage_entity")
	}
 
	check_magic(id)
 
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
//Angle to all targets in fov
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[x] = 0.0
		vec2LOS[y] = 0.0
	}
	else
	{
		new Float:flLen = 1.0 / veclength;
		vec2LOS[x] = vec2LOS[x]*flLen
		vec2LOS[y] = vec2LOS[y]*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[x] = v_forward[x]
	v_forward2D[y] = v_forward[y]
 
	flDot = vec2LOS[x]*v_forward2D[x]+vec2LOS[y]*v_forward2D[y]
 
	if ( flDot > 0.5 )
	{
		return flDot
	}
 
	return 0.0	
}
 
stock Float:Vec2DLength( Float:Vec[2] )  
{ 
	return floatsqroot(Vec[x]*Vec[x] + Vec[y]*Vec[y] )
}
 
stock bool:UTIL_In_FOV(id,target)
{
	if (Find_Angle(id,target,9999.9) > 0.0)
		return true
 
	return false
}
 
/* ==================================================================================================== */
 
public Greet_Player(id)
{
	id-=TASK_GREET
	new name[32]
	get_user_name(id,name,31)
	client_print(id,print_chat, "%s ! Witaj na serwerze DiabloMod %s !!! Aby wiedziec jakie sa komendy,napisz /komendy", name, "v.5.9L")
}
 
/* ==================================================================================================== */
 
 
 
/* ==================================================================================================== */
 
public changerace(id)
{
	if(freeze_ended && player_class[id]!=NONE ) set_user_health(id,0)
	if(player_class[id]!=NONE) savexpcom(id)
	player_class[id]=NONE
	client_connect(id) 
	select_class_query(id)
}
 
/* ==================================================================================================== */
 
//Disable autohelp messages and display our own.
public FW_WriteString(string[])
{
	if (equal(string,""))
		return FMRES_IGNORED
 
	//Disable autohelp
	if (equal(string,"#Hint_press_buy_to_purchase") || equal(string,"#Hint_press_buy_to_purchase "))
	{
		write_string( "" );
		return FMRES_SUPERCEDE
	}
 
	if (equal(string, "#Hint_spotted_a_friend") || equal(string, "#Hint_you_have_the_bomb"))
	{
		write_string( "" );
		return FMRES_SUPERCEDE
	}
 
	return FMRES_IGNORED
 
}
 
stock hudmsg(id,Float:display_time,const fmt[], {Float,Sql,Result,_}:...)
{	
	if (player_huddelay[id] >= 0.03*4)
		return PLUGIN_CONTINUE
 
	new buffer[512]
	vformat(buffer, 511, fmt, 4)
 
	set_hudmessage ( 255, 0, 0, -1.0, 0.4 + player_huddelay[id], 0, display_time/2, display_time, 0.1, 0.2, -1 ) 	
	show_hudmessage(id, buffer)
 
	player_huddelay[id]+=0.03
 
	remove_task(id+TASK_HUD)
	set_task(display_time, "hudmsg_clear", id+TASK_HUD, "", 0, "a", 3)
 
 
	return PLUGIN_CONTINUE
 
}
 
public hudmsg_clear(id)
{
	new pid = id-TASK_HUD
	player_huddelay[pid]=0.0
}
 
/* ==================================================================================================== */
 
public item_firetotem(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Tego totemu mozesz uzyc tylko raz na runde!")
	}
	else
	{
		used_item[id] = true
		Effect_Ignite_Totem(id,7)
	}
}
 
stock Effect_Ignite_Totem(id,seconds)
{
	new origin[3]
	pev(id,pev_origin,origin)
 
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Ignite_Totem")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_solid,SOLID_TRIGGER)
	set_pev(ent,pev_origin,origin)
	set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1)
 
	engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_ignite.mdl")  	
	set_rendering ( ent, kRenderFxGlowShell, 250,150,0, kRenderFxNone, 255 ) 	
	engfunc(EngFunc_DropToFloor,ent)
 
	set_pev(ent,pev_euser3,0)
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
}
 
public Effect_Ignite_Totem_Think(ent)
{
	//Safe check because effect on death
	if (!freeze_ended)
		remove_entity(ent)
 
	if (!is_valid_ent(ent))
		return PLUGIN_CONTINUE
 
	new id = pev(ent,pev_owner)
 
	//Apply and destroy
	if (pev(ent,pev_euser3) == 1)
	{
		new entlist[513]
		new numfound = find_sphere_class(ent,"player",player_b_firetotem[id]+0.0,entlist,512)
 
		for (new i=0; i < numfound; i++)
		{		
			new pid = entlist[i]
 
			//This totem can hit the caster
			if (pid == id && is_user_alive(id))
			{
				Effect_Ignite(pid,id,4)
				hudmsg(pid,3.0,"Palisz sie! Zastrzel wroga, aby przeniesc na niego twoj ogien!")
				continue
			}
 
			if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid))
				continue
 
			//Dextery makes the fire damage less
			if (player_dextery[pid] > 20)
				Effect_Ignite(pid,id,1)
			else if (player_dextery[pid] > 15)
				Effect_Ignite(pid,id,2)
			else if (player_dextery[pid] > 10)
				Effect_Ignite(pid,id,3)
			else
				Effect_Ignite(pid,id,4)
 
			hudmsg(pid,3.0,"Palisz sie! Zastrzel wroga, aby przeniesc na niego twoj ogien!")
		}
 
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
 
 
 
	//Entity should be destroyed because livetime is over
	if (pev(ent,pev_ltime) < halflife_time())
	{
		set_pev(ent,pev_euser3,1)
 
		//Show animation and die
 
		new Float:forigin[3], origin[3]
		pev(ent,pev_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] + player_b_firetotem[id]);
		write_coord( origin[2] + player_b_firetotem[id]);
		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( 150 ); // r, g, b
		write_byte( 150 ); // r, g, b
		write_byte( 0 ); // r, g, b
		write_byte( 128 ); // brightness
		write_byte( 5 ); // speed
		message_end();
 
		set_pev(ent,pev_nextthink, halflife_time() + 0.2)
 
	}
	else	
	{
		set_pev(ent,pev_nextthink, halflife_time() + 1.5)
	}
 
	return PLUGIN_CONTINUE
}
 
stock Spawn_Ent(const classname[]) 
{
	new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname))
	set_pev(ent, pev_origin, {0.0, 0.0, 0.0})    
	dllfunc(DLLFunc_Spawn, ent)
	return ent
}
 
stock Effect_Ignite(id,attacker,damage)
{
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Ignite")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_ltime, halflife_time() + 99 + 0.1)
	set_pev(ent,pev_solid,SOLID_NOT)
	set_pev(ent,pev_euser1,attacker)
	set_pev(ent,pev_euser2,damage)
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)	
 
	AddFlag(id,Flag_Ignite)
}
 
//euser3 = destroy and apply effect
public Effect_Ignite_Think(ent)
{
	new id = pev(ent,pev_owner)
	attacker = pev(ent,pev_euser1)
	new damage = pev(ent,pev_euser2)
 
	if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id) || !HasFlag(id,Flag_Ignite))
	{
		RemoveFlag(id,Flag_Ignite)
		Remove_All_Tents(id)
		Display_Icon(id ,0 ,"dmg_heat" ,200,0,0)
 
		remove_entity(ent)		
		return PLUGIN_CONTINUE
	}
 
 
	//Display ignite tent and icon
	Display_Tent(id,sprite_ignite,2)
	Display_Icon(id ,1 ,"dmg_heat" ,200,0,0)
 
	new origin[3]
	get_user_origin(id,origin)
 
	//Make some burning effects
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte( TE_SMOKE ) // 5
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2])
	write_short( sprite_smoke )
	write_byte( 22 )  // 10
	write_byte( 10 )  // 10
	message_end()
 
	//Decals
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte( TE_GUNSHOTDECAL ) // decal and ricochet sound
	write_coord( origin[0] ) //pos
	write_coord( origin[1] )
	write_coord( origin[2] )
	write_short (0) // I have no idea what thats supposed to be
	write_byte (random_num(199,201)) //decal
	message_end()
 
 
	//Do the actual damage
	change_health(id,-damage,attacker,"world")
 
	set_pev(ent,pev_nextthink, halflife_time() + 1.5)
 
 
	return PLUGIN_CONTINUE
}
 
stock AddFlag(id,flag)
{
	afflicted[id][flag] = 1	
}
 
stock RemoveFlag(id,flag)
{
	afflicted[id][flag] = 0
}
 
stock bool:HasFlag(id,flag)
{
	if (afflicted[id][flag])
		return true
 
	return false
}
 
stock Display_Tent(id,sprite, seconds)
{
	message_begin(MSG_ALL,SVC_TEMPENTITY)
	write_byte(TE_PLAYERATTACHMENT)
	write_byte(id)
	write_coord(40) //Offset
	write_short(sprite)
	write_short(seconds*10)
	message_end()
}
 
stock Remove_All_Tents(id)
{
	message_begin(MSG_ALL ,SVC_TEMPENTITY) //message begin
	write_byte(TE_KILLPLAYERATTACHMENTS)
	write_byte(id) // entity index of player
	message_end()
}
 
 
 
stock Find_Best_Angle(id,Float:dist, same_team = false)
{
	new Float:bestangle = 0.0
	new winner = -1
 
	for (new i=0; i < MAX; i++)
	{
		if (!is_user_alive(i) || i == id || (get_user_team(i) == get_user_team(id) && !same_team))
			continue
 
		if (get_user_team(i) != get_user_team(id) && same_team)
			continue
 
		//User has spell immunity, don't target
 
		new Float:c_angle = Find_Angle(id,i,dist)
 
		if (c_angle > bestangle && Can_Trace_Line(id,i))
		{
			winner = i
			bestangle = c_angle
		}
 
	}
 
	return winner
}
 
//This is an interpolation. We make tree lines with different height as to make sure
stock bool:Can_Trace_Line(id, target)
{	
	for (new i=-35; i < 60; i+=35)
	{		
		new Float:Origin_Id[3]
		new Float:Origin_Target[3]
		new Float:Origin_Return[3]
 
		pev(id,pev_origin,Origin_Id)
		pev(target,pev_origin,Origin_Target)
 
		Origin_Id[z] = Origin_Id[z] + i
		Origin_Target[z] = Origin_Target[z] + i
 
		trace_line(-1, Origin_Id, Origin_Target, Origin_Return) 
 
		if (get_distance_f(Origin_Return,Origin_Target) < 25.0)
			return true
 
	}
 
	return false
}
 
public item_hook(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Hak mozesz uzyc raz na runde!")
		return PLUGIN_CONTINUE	
	}
 
	new target = Find_Best_Angle(id,1000.0,false)
 
	if (!is_valid_ent(target))
	{
		hudmsg(id,2.0,"Wrog jest poza zasiegiem Haku.")
		return PLUGIN_CONTINUE
	}
 
	AddFlag(id,Flag_Hooking)
 
	set_user_gravity(target,0.0)
	set_task(0.1,"hook_prethink",id+TASK_HOOK,"",0,"b")
	hooked[id] = target
	hook_prethink(id+TASK_HOOK)
	emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
 
	used_item[id] = true	
	return PLUGIN_HANDLED
 
}
 
public hook_prethink(id)
{
	id -= TASK_HOOK
	if(!is_user_alive(id) || !is_user_alive(hooked[id])) 
	{
		RemoveFlag(id,Flag_Hooking)
		return PLUGIN_HANDLED
	}
	if (get_user_button(id) & ~IN_USE)
	{
		RemoveFlag(id,Flag_Hooking)
		return PLUGIN_HANDLED	
	}
	if(!HasFlag(id,Flag_Hooking))
	{
		if (is_user_alive(hooked[id]))
			set_user_gravity(id,1.0)
		remove_task(id+TASK_HOOK)
		return PLUGIN_HANDLED
	}
 
	//Get Id's origin
	static origin1[3]
	get_user_origin(id,origin1)
 
	static origin2[3]
	get_user_origin(hooked[id],origin2)
 
	//Create blue beam
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(1)		//TE_BEAMENTPOINT
	write_short(id)		// start entity
	write_coord(origin2[0])
	write_coord(origin2[1])
	write_coord(origin2[2])
	write_short(sprite_line)
	write_byte(1)		// framestart
	write_byte(1)		// framerate
	write_byte(2)		// life in 0.1's
	write_byte(5)		// width
	write_byte(0)		// noise
	write_byte(0)		// red
	write_byte(0)		// green
	write_byte(255)		// blue
	write_byte(200)		// brightness
	write_byte(0)		// speed
	message_end()
 
	//Calculate Velocity
	new Float:velocity[3]
	velocity[0] = (float(origin1[0]) - float(origin2[0])) * 3.0
	velocity[1] = (float(origin1[1]) - float(origin2[1])) * 3.0
	velocity[2] = (float(origin1[2]) - float(origin2[2])) * 3.0
 
	new Float:dy
	dy = velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2]
 
	new Float:dx
	dx = (4+player_intelligence[id]/2) * 120.0 / floatsqroot(dy)
 
	velocity[0] *= dx
	velocity[1] *= dx
	velocity[2] *= dx
 
	set_pev(hooked[id],pev_velocity,velocity)
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public item_gravitybomb(id)
{	
	if (pev(id,pev_flags) & FL_ONGROUND) 
	{
		hudmsg(id,2.0,"Musisz byc w powietrzu aby wywolac trzesienie!")
		return PLUGIN_CONTINUE
	}
 
	if (halflife_time()-gravitytimer[id] <= 5)
	{
		hudmsg(id,2.0,"Mozesz wywolac trzesienie co kazde 5 sekund")
		return PLUGIN_CONTINUE
	}
 
	gravitytimer[id] = floatround(halflife_time())
 
	new origin[3]
	get_user_origin(id,origin)
 
	if (origin[2] == 0)
		earthstomp[id] = 1
	else
		earthstomp[id] = origin[2]
 
	set_user_gravity(id,5.0)
	falling[id] = true
 
 
	return PLUGIN_CONTINUE
 
}
 
public add_bonus_stomp(id)
{
	set_gravitychange(id)
 
	new origin[3]
	get_user_origin(id,origin)
 
	new dam = earthstomp[id]-origin[2]
 
	earthstomp[id] = 0
 
	//If jump is is high enough, apply some shake effect and deal damage, 300 = down from BOMB A in dust2
	if (dam < 85)
		return PLUGIN_CONTINUE
 
	dam = dam-85
 
	message_begin(MSG_ONE , get_user_msgid("ScreenShake") , {0,0,0} ,id)
	write_short( 1<<14 );
	write_short( 1<<12 );
	write_short( 1<<14 );
	message_end();
 
	new entlist[513]
	new numfound = find_sphere_class(id,"player",230.0+player_strength[id]*2,entlist,512)
 
 
	for (new i=0; i < numfound; i++)
	{		
		new pid = entlist[i]
 
		if (pid == id || !is_user_alive(pid))
			continue
 
		if (get_user_team(id) == get_user_team(pid))
			continue
 
		if (!(pev(pid, pev_flags) & FL_ONGROUND)) continue	
 
		new Float:id_origin[3]
		new Float:pid_origin[3]
		new Float:delta_vec[3]
 
		pev(id,pev_origin,id_origin)
		pev(pid,pev_origin,pid_origin)
 
 
		delta_vec[x] = (pid_origin[x]-id_origin[x])+10
		delta_vec[y] = (pid_origin[y]-id_origin[y])+10
		delta_vec[z] = (pid_origin[z]-id_origin[z])+200
 
		set_pev(pid,pev_velocity,delta_vec)
 
		message_begin(MSG_ONE , get_user_msgid("ScreenShake") , {0,0,0} ,pid)
		write_short( 1<<14 );
		write_short( 1<<12 );
		write_short( 1<<14 );
		message_end();
 
		change_health(pid,-dam,id,"world")			
	}
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public item_rot(id)
{
	if (used_item[id])
	{
		RemoveFlag(id,Flag_Rot)
		used_item[id] = false
	}
	else
	{
		if (find_ent_by_owner(-1,"Effect_Rot",id) > 0)
			return PLUGIN_CONTINUE
 
		Create_Rot(id)
		used_item[id] = true
	}
 
	return PLUGIN_CONTINUE
}
 
public Create_Rot(id)
{		
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Rot")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_solid,SOLID_NOT)
	AddFlag(id,Flag_Rot)
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)	
 
}
 
public Effect_Rot_Think(ent)
{
	new id = pev(ent,pev_owner)
	if (!is_user_alive(id) || !HasFlag(id,Flag_Rot) || !freeze_ended)
	{
		Display_Icon(id,0,"dmg_bio",255,255,0)
		set_user_maxspeed(id,245.0+player_dextery[id])
 
		set_renderchange(id)
 
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
 
	set_user_maxspeed(id,252.0+player_dextery[id]+15)
	Display_Icon(id,1,"dmg_bio",255,150,0)
	set_renderchange(id)
 
	new entlist[513]
	new numfound = find_sphere_class(id,"player",250.0,entlist,512)
 
	for (new i=0; i < numfound; i++)
	{		
		new pid = entlist[i]
 
		if (pid == id || !is_user_alive(pid))
			continue
 
		if (get_user_team(id) == get_user_team(pid))
			continue
 
		//Rot him!
		if (random_num(1,2) == 1) Display_Fade(pid,1<<14,1<<14,1<<16,255,155,50,230)
 
		change_health(pid,-45,id,"world")
		Effect_Bleed(pid,100)
		Create_Slow(pid,3)
 
	}
 
	change_health(id,-10,id,"world")
 
	set_pev(ent,pev_nextthink, halflife_time() + 0.8)
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
//Daze player
stock Create_Slow(id,seconds)
{		
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Slow")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1)
	set_pev(ent,pev_solid,SOLID_NOT)
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)	
 
	AddFlag(id,Flag_Dazed)
}
 
public Effect_Slow_Think(ent)
{
	new id = pev(ent,pev_owner)
	if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
	{
		Display_Icon(id,0,"dmg_heat",255,255,0)
		RemoveFlag(id,Flag_Dazed)
		set_user_maxspeed(id,245.0+player_agility[id])
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
 
	set_user_maxspeed(id,245.0-50)
	Display_Icon(id,1,"dmg_heat",255,255,0)
	set_pev(ent,pev_nextthink, halflife_time() + 1.0)
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
stock AddTimedFlag(id,flag,seconds)
{		
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Timedflag")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1)
	set_pev(ent,pev_solid,SOLID_NOT)
	set_pev(ent,pev_euser3,flag)			
	AddFlag(id,flag)	
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
}
 
public Effect_Timedflag_Think(ent)
{
	new id = pev(ent,pev_owner)
	if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
	{
		RemoveFlag(id,pev(ent,pev_euser3))
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
 
	set_pev(ent,pev_nextthink, halflife_time() + 1.0)
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public item_illusion(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Ten przedmiot mozesz uzyc raz na runde!")
		return PLUGIN_CONTINUE
	}
 
	AddTimedFlag(id,Flag_Illusion,7)
	message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) 
	write_byte( 7) 
	write_byte( 0 ) 
	message_end() 
	used_item[id] = true
	use_addtofullpack = true
	return PLUGIN_CONTINUE
 
}
 
/* ==================================================================================================== */
 
public item_money_shield(id)
{
	if (used_item[id])
	{
		RemoveFlag(id,Flag_Moneyshield)
		used_item[id] = false
	}
	else
	{
		if (find_ent_by_owner(-1,"Effect_MShield",id) > 0)
			return PLUGIN_CONTINUE
 
		new ent = Spawn_Ent("info_target")
		set_pev(ent,pev_classname,"Effect_MShield")
		set_pev(ent,pev_owner,id)
		set_pev(ent,pev_solid,SOLID_NOT)		
		AddFlag(id,Flag_Moneyshield)	
		set_pev(ent,pev_nextthink, halflife_time() + 0.1)
		used_item[id] = true
	}
 
	return PLUGIN_CONTINUE
}
 
public Effect_MShield_Think(ent)
{
	new id = pev(ent,pev_owner)
	if (!is_user_alive(id) || cs_get_user_money(id) <= 0 || !HasFlag(id,Flag_Moneyshield) || !freeze_ended)
	{
		RemoveFlag(id,Flag_Moneyshield)
 
		set_renderchange(id)
 
		Display_Icon(id,0,"suithelmet_empty",255,255,255)
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
 
	if (cs_get_user_money(id)-250 < 0)
		cs_set_user_money(id,0)
	else
		cs_set_user_money(id,cs_get_user_money(id)-250)
 
	set_renderchange(id)
 
	Display_Icon(id,1,"suithelmet_empty",255,255,255)
 
	set_pev(ent,pev_nextthink, halflife_time() + 1.0)
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public item_mine(id)
{
	new count = 0
	new ents = -1
	ents = find_ent_by_owner(ents,"Mine",id)
	while (ents > 0)
	{
		count++
		ents = find_ent_by_owner(ents,"Mine",id)
	}
 
	if (count > 2)
	{
		hudmsg(id,2.0,"Mozesz podlozyc maksymalnie 3 miny na runde!")
		return PLUGIN_CONTINUE
	}
 
 
	new origin[3]
	pev(id,pev_origin,origin)
 
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Mine")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_movetype,MOVETYPE_TOSS)
	set_pev(ent,pev_origin,origin)
	set_pev(ent,pev_solid,SOLID_BBOX)
 
	engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/mine.mdl")  
	engfunc(EngFunc_SetSize,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)	
 
	use_addtofullpack = true
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */
 
public item_teamshield(id)
{
	if (used_item[id])
	{
		RemoveFlag(id,Flag_Teamshield)
		used_item[id] = false
		set_renderchange(id)
	}
	else
	{
		new target = Find_Best_Angle(id,1000.0,true)
 
		if (!is_valid_ent(target))
		{
			hudmsg(id,2.0,"Zaden cel nie jest zasiegu do tarczy")
			return PLUGIN_CONTINUE
		}
 
		if (pev(target,pev_rendermode) == kRenderTransTexture || player_item_id[target] == 17 || player_class[target] == Ninja)
		{
			hudmsg(id,2.0,"Nie mozesz wyczarowac tarczy na przyjacielu, jesli on jest niewidzialny.")
			return PLUGIN_CONTINUE
		}
 
		if (find_ent_by_owner(-1,"Effect_Teamshield",id) > 0)
			return PLUGIN_CONTINUE
 
		if (get_user_health(target)+player_b_teamheal[id] <= race_heal[player_class[target]]+player_strength[target]*2)
			change_health(target,player_b_teamheal[id],0,"")
 
		new ent = Spawn_Ent("info_target")
		set_pev(ent,pev_classname,"Effect_Teamshield")
		set_pev(ent,pev_owner,id)
		set_pev(ent,pev_solid,SOLID_NOT)
		set_pev(ent,pev_nextthink, halflife_time() + 0.1)	
		set_pev(ent,pev_euser2, target)	
 
		AddFlag(id,Flag_Teamshield)
		AddFlag(target,Flag_Teamshield_Target)
		used_item[id] = true
 
		set_renderchange(target)
	}
 
	return PLUGIN_CONTINUE
}
 
public Effect_Teamshield_Think(ent)
{
	new id = pev(ent,pev_owner)
	new victim = pev(ent,pev_euser2)
 
	new Float: vec1[3]
	new Float: vec2[3]
	new Float: vec3[3]
 
	entity_get_vector(id,EV_VEC_origin,vec1)
	entity_get_vector(victim ,EV_VEC_origin,vec2)
 
	new hit = trace_line ( id, vec1, vec2, vec3 )
 
	if (hit != victim || !is_user_alive(id) || !is_user_alive(victim) || !Can_Trace_Line(id,victim) || !UTIL_In_FOV(id,victim) || !HasFlag(id,Flag_Teamshield) || !freeze_ended)
	{
		RemoveFlag(id,Flag_Teamshield)
		RemoveFlag(victim,Flag_Teamshield_Target)
		remove_entity(ent)
		set_renderchange(victim)
		return PLUGIN_CONTINUE
	}
	else		
		set_pev(ent,pev_nextthink, halflife_time() + 0.3)
 
	new origin1[3]
	new origin2[3]
 
	get_user_origin(id,origin1)
	get_user_origin(victim,origin2)
 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte (TE_BEAMPOINTS)
	write_coord(origin1[0])
	write_coord(origin1[1])
	write_coord(origin1[2]+8)
	write_coord(origin2[0])
	write_coord(origin2[1])
	write_coord(origin2[2]+8)
	write_short(sprite_laser);
	write_byte(1) // framestart 
	write_byte(1) // framerate 
	write_byte(3) // life 
	write_byte(5) // width 
	write_byte(10) // noise 
	write_byte(0) // r, g, b (red)
	write_byte(255) // r, g, b (green)
	write_byte(0) // r, g, b (blue)
	write_byte(45) // brightness 
	write_byte(5) // speed 
	message_end()    
 
	set_renderchange(victim) 
 
	return PLUGIN_CONTINUE
}
 
/* ==================================================================================================== */	
 
//Find the owner that has target as target and the specific classname
public find_owner_by_euser(target,classname[])
{
	new ent = -1
	ent = find_ent_by_class(ent,classname)
 
	while (ent > 0)
	{
		if (pev(ent,pev_euser2) == target)
			return pev(ent,pev_owner)
		ent = find_ent_by_class(ent,classname)
	}
 
	return -1
}
 
/* ==================================================================================================== */
 
public item_totemheal(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Totem Udzrowiciela mozesz polozyc raz na runde!")
		return PLUGIN_CONTINUE
	}
 
	used_item[id] = true
 
	new origin[3]
	pev(id,pev_origin,origin)
 
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Healing_Totem")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_solid,SOLID_TRIGGER)
	set_pev(ent,pev_origin,origin)
	set_pev(ent,pev_ltime, halflife_time() + 7 + 0.1)
 
	engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl")  	
	set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) 	
	engfunc(EngFunc_DropToFloor,ent)
 
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
 
	return PLUGIN_CONTINUE	
}
 
public Effect_Healing_Totem_Think(ent)
{
	new id = pev(ent,pev_owner)
	new totem_dist = 300
	new amount_healed = player_b_heal[id]
 
	//We have emitted beam. Apply effect (this is delayed)
	if (pev(ent,pev_euser2) == 1)
	{		
		new Float:forigin[3], origin[3]
		pev(ent,pev_origin,forigin)	
		FVecIVec(forigin,origin)
 
		//Find people near and damage them
		new entlist[513]
		new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist,512,forigin)
 
		for (new i=0; i < numfound; i++)
		{		
			new pid = entlist[i]
 
			if (get_user_team(pid) != get_user_team(id))
				continue
 
			if (is_user_alive(pid)) change_health(pid,amount_healed,0,"")			
		}
 
		set_pev(ent,pev_euser2,0)
		set_pev(ent,pev_nextthink, halflife_time() + 1.5)
 
		return PLUGIN_CONTINUE
	}
 
	//Entity should be destroyed because livetime is over
	if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
	{
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
 
	//If this object is almost dead, apply some render to make it fade out
	if (pev(ent,pev_ltime)-2.0 < halflife_time())
		set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) 
 
	new Float:forigin[3], origin[3]
	pev(ent,pev_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();
 
	set_pev(ent,pev_euser2,1)
	set_pev(ent,pev_nextthink, halflife_time() + 0.5)
 
 
	return PLUGIN_CONTINUE
 
}
 
public freeze_over1()
{
	round_status=1
	agi = BASE_SPEED;
	new players[32], num
	get_players(players,num,"a")	
 
	for(new i=0 ; i<num ; i++)
	{
		set_speedchange(players[i])
	}
}
 
public freeze_begin1()
{
	round_status=0
}
 
public funcReleaseVic(id) 
{	
	DemageTake[id]=0
	remove_task(id+GLUTON)
}
 
public funcReleaseVic2(id) 
{	
	agi = BASE_SPEED;
	if(round_status==1)
	set_speedchange(id)
}
 
public funcDemageVic(id,attacker) 
{
		id-=GLUTON
		if(get_user_health(id)>10)
		set_task(2.0, "funcDemageVic", id+GLUTON)
		DoDamage(id, attacker1, 5);
}
 
public set_speedchange(id)
{
	if(DemageTake[id]==1) agi=(BASE_SPEED / 2)
	else agi=BASE_SPEED
 
	if (is_user_connected(id) && freeze_ended)
	{
		new speeds
		if(player_class[id] == Ninja) speeds= 40 + floatround(player_dextery[id]*1.3)
		else if(player_class[id] == Zabojca) speeds= 10 + floatround(player_dextery[id]*1.3)
		else if(player_class[id] ==Barbarzynca) speeds= -10 + floatround(player_dextery[id]*1.3)
		else speeds= floatround(player_dextery[id]*1.3)
		set_user_maxspeed(id, agi + speeds)
	}
}
 
public set_renderchange(id)
{
	if(is_user_connected(id) && is_user_alive(id))
	{	
		if(!task_exists(id+TASK_FLASH_LIGHT))
		{
			new render=255
 
			if (player_class[id] == Ninja)
			{
				new inv_bonus = 255 - player_b_inv[id]
				render = 5
 
				if(player_b_inv[id]>0)
				{
					while(inv_bonus>0)
					{
						inv_bonus-=20
						render--
					}
				}
 
				if(player_b_usingwind[id]==1)
				{
					render/=2
				}
 
				if(render<0) render=0
 
				if(HasFlag(id,Flag_Moneyshield)||HasFlag(id,Flag_Rot)||HasFlag(id,Flag_Teamshield_Target)) render*=2	
 
				set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, render)
			}
			else if(HasFlag(id,Flag_Moneyshield)||HasFlag(id,Flag_Rot)||HasFlag(id,Flag_Teamshield_Target))
			{
				if (player_b_usingwind[id]==1) set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,75)
 
				if(HasFlag(id,Flag_Moneyshield)) set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,16)  
				if(HasFlag(id,Flag_Rot)) set_rendering ( id, kRenderFxGlowShell, 255,255,0, kRenderFxNone, 10 )
				if(HasFlag(id,Flag_Teamshield_Target)) set_rendering ( id, kRenderFxGlowShell, 0,200,0, kRenderFxNone, 0 ) 
			}
			else if(invisible_cast[id]==1)
			{
				if(player_b_inv[id]>0) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, floatround((10.0/255.0)*(255-player_b_inv[id])))
				else set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 10)
			}				
			else
			{
				render = 255 
				if(player_b_inv[id]>0) render = player_b_inv[id]
 
				set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, render)
			}
 
		}	
		else set_user_rendering(id,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4)
	}
}
 
public set_gravitychange(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		if(player_class[id] == Ninja)
		{
			if(player_b_gravity[id]>6) set_user_gravity(id, 0.30)
			else if(player_b_gravity[id]>3) set_user_gravity(id, 0.2)
			else set_user_gravity(id, 0.25)
		}
		else
		{
			set_user_gravity(id,1.0*(1.0-player_b_gravity[id]/12.0))
		}
	}
}
 
public cmd_who(id)
{
        static motd[1000],header[100],name[32],len,i
        len = 0
        new team[32]
        static players[32], numplayers
        get_players(players, numplayers, "a")
        new playerid
        // Table i background
        len += formatex(motd[len],sizeof motd - 1 - len,"<body bgcolor=#000000 text=#FFB000>")
        len += formatex(motd[len],sizeof motd - 1 - len,"<center><table width=700 border=1 cellpadding=4 cellspacing=4>")
        len += formatex(motd[len],sizeof motd - 1 - len,"<tr><td>Nick</td><td>Klasa</td><td>Poziom</td><td>Druzyna</td></tr>")
        //Title
        formatex(header,sizeof header - 1,"Statystyki DiabloMod")
 
        for (i=0; i< numplayers; i++)
	{
                playerid = players[i]
                if ( get_user_team(playerid) == 1 ) team = "Terrorysci"
                else if ( get_user_team(playerid) == 2 ) team = "CT"
                else team = "Spectator"
                get_user_name( playerid, name, 31 )
		get_user_name( playerid, name, 31 )
 
		len += formatex(motd[len],sizeof motd - 1 - len,"<tr><td>%s</td><td>%s</td><td>%d</td><td>%s</td></tr>",name,Race[player_class[playerid]], player_lvl[playerid],team)
        }
        len += formatex(motd[len],sizeof motd - 1 - len,"</table></center>")
 
        show_motd(id,motd,header)     
}
 
public det_fade(id)
{
	if (wear_sun[id] == 1){
		Display_Icon(id ,ICON_FLASH ,ICON_S ,0,255,0)
		Display_Fade(id,1,1,1<<12,0,0,0,0)
	}
	if (wear_sun[id] == 0){
		Display_Icon(id ,ICON_HIDE ,ICON_S ,0,255,0)
	}
}
 
public changeskin(id,reset){
   if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE
   if (reset==1){
      cs_reset_user_model(id)
      skinchanged[id]=false
      return PLUGIN_HANDLED
   }else if (reset==2){
      //cs_set_user_model(id,"goomba")
      cs_set_user_model(id,"zombie")
      skinchanged[id]=true
      return PLUGIN_HANDLED
   }else{
      //new newSkin[32]
      new num = random_num(0,3)
 
      if (get_user_team(id)==1){
         //add(newSkin,31,CTSkins[num])
         cs_set_user_model(id,CTSkins[num])
      }else{
         //client_print(0, print_console, "CT mole, using new skin %s", TSkins[num])
         //add(newSkin,31,TSkins[num])
         cs_set_user_model(id,TSkins[num])
      }
 
      skinchanged[id]=true
   }
 
   return PLUGIN_CONTINUE
}
 
 stock refill_ammo(id)
{	
	new wpnid
	if(!is_user_alive(id) || pev(id,pev_iuser1)) return;
 
	cs_set_user_armor(id,200,CS_ARMOR_VESTHELM);
 
	new wpn[32],clip,ammo
	wpnid = get_user_weapon(id, clip, ammo)
	get_weaponname(wpnid,wpn,31)
 
	new wEnt;
 
	// set clip ammo
	wpnid = get_weaponid(wpn)
	//wEnt = get_weapon_ent(id,wpnid);
	wEnt = get_weapon_ent(id,wpnid);
	cs_set_weapon_ammo(wEnt,maxClip[wpnid]);
 
}
 
stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
	// who knows what wpnName will be
	static newName[32];
 
	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,31);
 
	// go with what we were told
	else formatex(newName,31,"%s",wpnName);
 
	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,31,"weapon_%s",newName);
 
	new ent;
	while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}
 
	return ent;
}
 
DoDamage(iTargetID, iShooterID, iDamage/*, iDamageCause, bIsWeaponID = false, iHeadShot = 0*/)
{
	if(is_user_connected(iTargetID)&&is_user_connected(iShooterID))
	if ( is_user_alive(iTargetID))
	{	
		new bool:bPlayerDied = false;
		new iHP = get_user_health(iTargetID);
 
		if ( ( iHP - iDamage ) <= 0 )
			bPlayerDied = true;
 
		if (bPlayerDied)
		{
			// engine.inc set_msg_block function
			//set_msg_block(g_iGameMsgDeath, BLOCK_ONCE);
			user_kill(iTargetID, 1);
		}
		else
			change_health(iTargetID,-iDamage,0,"")
 
		new sShooterName[32];
		get_user_name(iShooterID, sShooterName, 31);
 
		if (bPlayerDied)
		{
			if ( iShooterID != iTargetID )
			{
				if ( get_user_team(iShooterID) != get_user_team(iTargetID) )
					set_user_frags(iShooterID, get_user_frags(iShooterID) + 1);
				else
					set_user_frags(iShooterID, get_user_frags(iShooterID) - 1);
 
				//LogKill(iShooterID, iTargetID, sWeaponOrMagicName);
			}
 
			//AddXP(iShooterID, BM_XP_KILL, iTargetID); // bmxphandler.inc
			award_item(iShooterID,0)
			award_kill(iShooterID,iTargetID)
			add_respawn_bonus(iTargetID)
			add_bonus_explode(iTargetID)
			add_barbarian_bonus(iShooterID)
			if (player_class[iShooterID] == Barbarzynca)
			refill_ammo(iShooterID)
		}
	}
}
 
public funcDemageVic3(id) 
{
	if(DemageTake1[id]==1)
	{
          DemageTake1[id]=0
          set_task(5.0, "funcReleaseVic3", id)
          user_slap(id, 0, 1); 
          user_slap(id, 0, 1);
          user_slap(id, 0, 1);
	}
}
 
public funcReleaseVic3(id) 
{	
	DemageTake1[id]=1
}
 
public event_flashlight(id) {
	if(!get_cvar_num("flashlight_custom")) {
		return;
	}
 
	if(flashlight[id]) {
		flashlight[id] = 0;
	}
	else {
		if(flashbattery[id] > 0) {
			flashlight[id] = 1;
		}
	}
 
	if(!task_exists(TASK_CHARGE+id)) {
		new parms[1];
		parms[0] = id;
		set_task((flashlight[id]) ? get_cvar_float("flashlight_drain") : get_cvar_float("flashlight_charge"),"charge",TASK_CHARGE+id,parms,1);
	}
 
	message_begin(MSG_ONE,get_user_msgid("Flashlight"),{0,0,0},id);
	write_byte(flashlight[id]);
	write_byte(flashbattery[id]);
	message_end();
 
	entity_set_int(id,EV_INT_effects,entity_get_int(id,EV_INT_effects) & ~EF_DIMLIGHT);
}
 
public charge(parms[]) {
	if(!get_cvar_num("flashlight_custom")) {
		return;
	}
 
	new id = parms[0];
 
	if(flashlight[id]) {
		flashbattery[id] -= 1;
	}
	else {
		flashbattery[id] += 1;
	}
 
	message_begin(MSG_ONE,get_user_msgid("FlashBat"),{0,0,0},id);
	write_byte(flashbattery[id]);
	message_end();
 
	if(flashbattery[id] <= 0) {
		flashbattery[id] = 0;
		flashlight[id] = 0;
 
		message_begin(MSG_ONE,get_user_msgid("Flashlight"),{0,0,0},id);
		write_byte(flashlight[id]);
		write_byte(flashbattery[id]);
		message_end();
 
		// don't return so we can charge it back up to full
	}
	else if(flashbattery[id] >= MAX_FLASH) 
	{
		flashbattery[id] = MAX_FLASH
		return; // return because we don't need to charge anymore
	}
 
	set_task((flashlight[id]) ? get_cvar_float("flashlight_drain") : get_cvar_float("flashlight_charge"),"charge",TASK_CHARGE+id,parms,1)
}
////////////////////////////////////////////////////////////////////////////////
//                         REVIVAL KIT - NOT ALL                              //
////////////////////////////////////////////////////////////////////////////////
public message_clcorpse()
{	
	return PLUGIN_HANDLED
}
 
public event_hltv()
{
	fm_remove_entity_name("fake_corpse")
	fm_remove_entity_name("Mine")
	fm_remove_entity_name("dbmod_shild")
 
	static players[32], num
	get_players(players, num, "a")
	for(new i = 0; i < num; i++)
	{
		if(is_user_connected(players[i]))
		{
			set_task(0.0, "funcReleaseVic", i)
			reset_player(players[i])
			msg_bartime(players[i], 0)
			trace_bool[players[i]] = 0
		}
	}
}
 
public reset_player(id)
{
	remove_task(TASKID_REVIVE + id)
	remove_task(TASKID_RESPAWN + id)
	remove_task(TASKID_CHECKRE + id)
	remove_task(TASKID_CHECKST + id)
	remove_task(TASKID_ORIGIN + id)
	remove_task(TASKID_SETUSER + id)
	remove_task(GLUTON+id)
 
 
	g_revive_delay[id] 	= 0.0
	g_wasducking[id] 	= false
	g_body_origin[id] 	= Float:{0.0, 0.0, 0.0}
 
}
 
public fwd_playerpostthink(id)
{
	if(!is_user_connected(id)) return FMRES_IGNORED
 
	if(g_haskit[id]==0) return FMRES_IGNORED
 
	if(!is_user_alive(id))
	{
		Display_Icon(id ,ICON_HIDE ,"rescue" ,0,160,0)
		return FMRES_IGNORED
	}
 
	new body = find_dead_body(id)
	if(fm_is_valid_ent(body))
	{
		new lucky_bastard = pev(body, pev_owner)
 
		if(!is_user_connected(lucky_bastard))
			return FMRES_IGNORED
 
		new lb_team = get_user_team(lucky_bastard)
		if(lb_team == 1 || lb_team == 2 )
			Display_Icon(id ,ICON_FLASH ,"rescue" ,0,160,0)
	}
	else
		Display_Icon(id , ICON_SHOW,"rescue" ,0,160,0)
 
	return FMRES_IGNORED
}
 
public task_check_dead_flag(id)
{
	if(!is_user_connected(id))
		return
 
	if(pev(id, pev_deadflag) == DEAD_DEAD)
		create_fake_corpse(id)
	else
		set_task(0.5, "task_check_dead_flag", id)
}	
 
public create_fake_corpse(id)
{
	set_pev(id, pev_effects, EF_NODRAW)
 
	static model[32]
	cs_get_user_model(id, model, 31)
 
	static player_model[64]
	format(player_model, 63, "models/player/%s/%s.mdl", model, model)
 
	static Float: player_origin[3]
	pev(id, pev_origin, player_origin)
 
	static Float:mins[3]
	mins[0] = -16.0
	mins[1] = -16.0
	mins[2] = -34.0
 
	static Float:maxs[3]
	maxs[0] = 16.0
	maxs[1] = 16.0
	maxs[2] = 34.0
 
	if(g_wasducking[id])
	{
		mins[2] /= 2
		maxs[2] /= 2
	}
 
	static Float:player_angles[3]
	pev(id, pev_angles, player_angles)
	player_angles[2] = 0.0
 
	new sequence = pev(id, pev_sequence)
 
	new ent = fm_create_entity("info_target")
	if(ent)
	{
		set_pev(ent, pev_classname, "fake_corpse")
		engfunc(EngFunc_SetModel, ent, player_model)
		engfunc(EngFunc_SetOrigin, ent, player_origin)
		engfunc(EngFunc_SetSize, ent, mins, maxs)
		set_pev(ent, pev_solid, SOLID_TRIGGER)
		set_pev(ent, pev_movetype, MOVETYPE_TOSS)
		set_pev(ent, pev_owner, id)
		set_pev(ent, pev_angles, player_angles)
		set_pev(ent, pev_sequence, sequence)
		set_pev(ent, pev_frame, 9999.9)
	}	
}
 
public fwd_emitsound(id, channel, sound[]) 
{
	if(!is_user_alive(id) || !g_haskit[id])
		return FMRES_IGNORED	
 
	if(!equali(sound, "common/wpn_denyselect.wav"))
		return FMRES_IGNORED	
 
	if(task_exists(TASKID_REVIVE + id))
		return FMRES_IGNORED
 
	if(!(fm_get_user_button(id) & IN_USE))
		return FMRES_IGNORED
 
	new body = find_dead_body(id)
	if(!fm_is_valid_ent(body))
		return FMRES_IGNORED
 
	new lucky_bastard = pev(body, pev_owner)
	new lb_team = get_user_team(lucky_bastard)
	if(lb_team != 1 && lb_team != 2)
		return FMRES_IGNORED
 
	static name[32]
	get_user_name(lucky_bastard, name, 31)
	client_print(id, print_chat, "Reviving %s", name)
 
	new revivaltime = get_pcvar_num(cvar_revival_time)
	msg_bartime(id, revivaltime)
 
	new Float:gametime = get_gametime()
	g_revive_delay[id] = gametime + float(revivaltime) - 0.01
 
	emit_sound(id, CHAN_AUTO, SOUND_START, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	set_task(0.0, "task_revive", TASKID_REVIVE + id)
 
	return FMRES_SUPERCEDE
}
 
public task_revive(taskid)
{
	new id = taskid - TASKID_REVIVE
 
	if(!is_user_alive(id))
	{
		failed_revive(id)
		return FMRES_IGNORED
	}
 
	if(!(fm_get_user_button(id) & IN_USE))
	{
		failed_revive(id)
		return FMRES_IGNORED
	}
 
	new body = find_dead_body(id)
	if(!fm_is_valid_ent(body))
	{
		failed_revive(id)
		return FMRES_IGNORED
	}
 
	new lucky_bastard = pev(body, pev_owner)
	if(!is_user_connected(lucky_bastard))
	{
		failed_revive(id)
		return FMRES_IGNORED
	}
 
	new lb_team = get_user_team(lucky_bastard)
	if(lb_team != 1 && lb_team != 2)
	{
		failed_revive(id)
		return FMRES_IGNORED
	}
 
	static Float:velocity[3]
	pev(id, pev_velocity, velocity)
	velocity[0] = 0.0
	velocity[1] = 0.0
	set_pev(id, pev_velocity, velocity)
 
	new Float:gametime = get_gametime()
	if(g_revive_delay[id] < gametime)
	{
		if(findemptyloc(body, 10.0))
		{
			fm_remove_entity(body)
			emit_sound(id, CHAN_AUTO, SOUND_FINISHED, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
 
			new args[3]
			args[0]=lucky_bastard
			args[2]=id
 
			if(get_user_team(id)!=get_user_team(lucky_bastard))
			{
				change_health(id,30,0,"")
				args[1]=1
				Give_Xp(id,get_cvar_num("diablo_xpbonus"))
			}
			else
			{
				args[1]=0
				Give_Xp(id,get_cvar_num("diablo_xpbonus"))
				set_task(0.1, "task_respawn", TASKID_RESPAWN + lucky_bastard,args,3)
			}
 
		}
		else
			 failed_revive(id)
	}
	else
		set_task(0.1, "task_revive", TASKID_REVIVE + id)
 
	return FMRES_IGNORED
}
 
public failed_revive(id)
{
	msg_bartime(id, 0)
	emit_sound(id, CHAN_AUTO, SOUND_FAILED, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
 
public task_origin(args[])
{
	new id = args[0]
	engfunc(EngFunc_SetOrigin, id, g_body_origin[id])
 
	static  Float:origin[3]
	pev(id, pev_origin, origin)
	set_pev(id, pev_zorigin, origin[2])
 
	set_task(0.1, "task_stuck_check", TASKID_CHECKST + id,args,2)
 
}
 
stock find_dead_body(id)
{
	static Float:origin[3]
	pev(id, pev_origin, origin)
 
	new ent
	static classname[32]	
	while((ent = fm_find_ent_in_sphere(ent, origin, get_pcvar_float(cvar_revival_dis))) != 0) 
	{
		pev(ent, pev_classname, classname, 31)
		if(equali(classname, "fake_corpse") && fm_is_ent_visible(id, ent))
			return ent
	}
	return 0
}
 
stock msg_bartime(id, seconds) 
{
	if(is_user_bot(id)||!is_user_alive(id)||!is_user_connected(id))
		return
 
	if((fm_get_user_button(id) & IN_USE)) change_health(id,-10,id,"")
 
	message_begin(MSG_ONE, g_msg_bartime, _, id)
	write_byte(seconds)
	write_byte(0)
	message_end()
}
 
 public task_respawn(args[]) 
 {
	new id = args[0]
 
	if (!is_user_connected(id) || is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR) return
 
	set_pev(id, pev_deadflag, DEAD_RESPAWNABLE) 
	dllfunc(DLLFunc_Think, id) 
	dllfunc(DLLFunc_Spawn, id) 
	set_pev(id, pev_iuser1, 0)
 
	set_task(0.1, "task_check_respawn", TASKID_CHECKRE + id,args,2)
 
}
 
public task_check_respawn(args[])
{
	new id = args[0]
 
	if(pev(id, pev_iuser1))
		set_task(0.1, "task_respawn", TASKID_RESPAWN + id,args,2)
	else
		set_task(0.1, "task_origin", TASKID_ORIGIN + id,args,2)
 
}
 
public task_stuck_check(args[])
{
	new id = args[0]
 
	static Float:origin[3]
	pev(id, pev_origin, origin)
 
	if(origin[2] == pev(id, pev_zorigin))
		set_task(0.1, "task_respawn", TASKID_RESPAWN + id,args,2)
	else
		set_task(0.1, "task_setplayer", TASKID_SETUSER + id,args,2)
}
 
public task_setplayer(args[])
{
	new id = args[0]
 
	fm_give_item(id, "weapon_knife")
 
	if(args[1]==1)
	{
		fm_give_item(id, "weapon_mp5navy")
		change_health(id,999,0,"")		
		set_user_godmode(id, 1)
 
		new newarg[1]
		newarg[0]=id
 
		set_task(3.0,"god_off",id+95123,newarg,1)
	}
	else
	{
		fm_set_user_health(id, get_pcvar_num(cvar_revival_health)+player_intelligence[args[2]])
 
		Display_Fade(id,seconds(2),seconds(2),0,0,0,0,255)
	}
 
	if(player_item_id[id]==17) fm_set_user_health(id,5)
}
 
public god_off(args[])
{
	set_user_godmode(args[0], 0)
}
 
stock bool:findemptyloc(ent, Float:radius)
{
	if(!fm_is_valid_ent(ent))
		return false
 
	static Float:origin[3]
	pev(ent, pev_origin, origin)
	origin[2] += 2.0
 
	new owner = pev(ent, pev_owner)
	new num = 0, bool:found = false
 
	while(num <= 100)
	{
		if(is_hull_vacant(origin))
		{
			g_body_origin[owner][0] = origin[0]
			g_body_origin[owner][1] = origin[1]
			g_body_origin[owner][2] = origin[2]
 
			found = true
			break
		}
		else
		{
			origin[0] += random_float(-radius, radius)
			origin[1] += random_float(-radius, radius)
			origin[2] += random_float(-radius, radius)
 
			num++
		}
	}
	return found
}
 
stock bool:is_hull_vacant(const Float:origin[3])
{
	new tr = 0
	engfunc(EngFunc_TraceHull, origin, origin, 0, HULL_HUMAN, 0, tr)
	if(!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
		return true
 
	return false
}
 
public count_jumps(id)
{
	if( is_user_connected(id))
	{
		if( player_class[id]== Paladyn ) JumpsMax[id]=5+floatround(player_intelligence[id]/10.0)
		else JumpsMax[id]=0
 
		if(on_knife[id] && JumpsMax[id]>0) fm_set_user_longjump(id,true,true)
	}
}
 
////////////////////////////////////////////////////////////////////////////////
//                                  Noze                                      //
////////////////////////////////////////////////////////////////////////////////
public give_knife(id)
{
	new knifes = 0
	if(player_class[id] == Ninja) knifes = 10 + floatround ( player_intelligence[id]/10.0 , floatround_floor )
	else if(player_class[id] == Zabojca) knifes = 3 + floatround ( player_intelligence[id]/20.0 , floatround_floor )
 
	max_knife[id] = knifes
	player_knife[id] = knifes
}
 
public command_knife(id) 
{
 
	if(!is_user_alive(id)) return PLUGIN_HANDLED
 
 
	if(!player_knife[id])
	{
		client_print(id,print_center,"Nie masz juz krotkich nozy, aby rzucic w przeciwnika.")
		return PLUGIN_HANDLED
	}
 
	if(tossdelay[id] > get_gametime() - 0.9) return PLUGIN_HANDLED
	else tossdelay[id] = get_gametime()
 
	player_knife[id]--
 
	if (player_knife[id] == 1) {
		client_print(id,print_center,"Zostal ci juz ostatni krotki noz!")
	}
 
	new Float: Origin[3], Float: Velocity[3], Float: vAngle[3], Ent
 
	entity_get_vector(id, EV_VEC_origin , Origin)
	entity_get_vector(id, EV_VEC_v_angle, vAngle)
 
	Ent = create_entity("info_target")
 
	if (!Ent) return PLUGIN_HANDLED
 
	entity_set_string(Ent, EV_SZ_classname, "throwing_knife")
	entity_set_model(Ent, "models/diablomod/w_throwingknife.mdl")
 
	new Float:MinBox[3] = {-1.0, -7.0, -1.0}
	new Float:MaxBox[3] = {1.0, 7.0, 1.0}
	entity_set_vector(Ent, EV_VEC_mins, MinBox)
	entity_set_vector(Ent, EV_VEC_maxs, MaxBox)
 
	vAngle[0] -= 90
 
	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, 1)
	entity_set_int(Ent, EV_INT_movetype, 6)
	entity_set_edict(Ent, EV_ENT_owner, id)
 
	VelocityByAim(id, get_cvar_num("diablo_knife_speed") , Velocity)
	entity_set_vector(Ent, EV_VEC_velocity ,Velocity)
 
	return PLUGIN_HANDLED
}
 
public touchKnife(knife, id)
{	
	new kid = entity_get_edict(knife, EV_ENT_owner)
 
	if(is_user_alive(id)) 
	{
		new movetype = entity_get_int(knife, EV_INT_movetype)
 
		if(movetype == 0) 
		{
			if( player_knife[id] < max_knife[id] )
			{
				player_knife[id] += 1
				client_print(id,print_center,"Obecnie masz %i krotkich nozy",player_knife[id])
			}
			emit_sound(knife, CHAN_ITEM, "weapons/knife_deploy1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
			remove_entity(knife)
		}
		else if (movetype != 0) 
		{
			if(kid == id) return
 
			remove_entity(knife)
 
			if(get_cvar_num("mp_friendlyfire") == 0 && get_user_team(id) == get_user_team(kid)) return
 
			entity_set_float(id, EV_FL_dmg_take, get_cvar_num("diablo_knife") * 1.0)
 
			change_health(id,-get_cvar_num("diablo_knife"),kid,"knife")
			message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id)
			write_short(7<<14)
			write_short(1<<13)
			write_short(1<<14)
			message_end()		
 
			if(get_user_team(id) == get_user_team(kid)) {
				new name[33]
				get_user_name(kid,name,32)
				client_print(0,print_chat,"%s attacked a teammate",name)
			}
 
			emit_sound(id, CHAN_ITEM, "weapons/knife_hit4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
 
		}
	}
}
 
public touchWorld(knife, world)
{
	entity_set_int(knife, EV_INT_movetype, 0)
	emit_sound(knife, CHAN_ITEM, "weapons/knife_hitwall1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}
 
public touchbreakable(ent1, ent2)
{
	new name[32],breakable,ent
	entity_get_string(ent1,EV_SZ_classname,name,31)
	if(equali(name,"func_breakable"))
	{
		breakable=ent1
		ent=ent2
	}
	else
	{
		breakable=ent2
		ent=ent1
	}
	new Float: b_hp = entity_get_float(breakable,EV_FL_health)
	if(b_hp>80) entity_set_float(breakable,EV_FL_health,b_hp-50.0)
	else dllfunc(DLLFunc_Use,breakable,ent)
 
	entity_get_string(ent,EV_SZ_classname,name,31)
	if(equali(name,"throwing_knife"))
	{
		emit_sound(ent, CHAN_ITEM, "weapons/knife_hitwall1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
	}
	else remove_entity(ent)
}
 
public kill_all_entity(classname[]) {
	new iEnt = find_ent_by_class(-1, classname)
	while(iEnt > 0) {
		remove_entity(iEnt)
		iEnt = find_ent_by_class(iEnt, classname)		
	}
}
////////////////////////////////////////////////////////////////////////////////
//                             koniec z nozami                                //
////////////////////////////////////////////////////////////////////////////////
public mod_info(id)
{
	client_print(id,print_console,"Witamy w Diablomod by Miczu & GuTeK")
	client_print(id,print_console,"")
	client_print(id,print_console,"Odlegla baza tego moda jest Diablo Mod v8.0 by N1ghtmr1 ")
	client_print(id,print_console,"Od tego czasu numeracja zostala zresetowana i zaczynalismy od v.1")
	client_print(id,print_console,"")
	client_print(id,print_console,"")
	client_print(id,print_console,"Lista osob ktore przyczynily sie zmianie kodu:")
	client_print(id,print_console,"(nie zgloszeni buga, autentyczna pomoc)")
	client_print(id,print_console,"")
	client_print(id,print_console,"SkinnerBox - poprawa transalcji (od 5.4a)")
	client_print(id,print_console,"DK - pomoc w testach wersji pod SQL")
	client_print(id,print_console,"")
	client_print(id,print_console,"")
	client_print(id,print_console,"")
	client_print(id,print_console,"Jesli kogos pominelem to zglosic sie na forum")
	client_print(id,print_console,"")
	return PLUGIN_HANDLED
}
////////////////////////////////////////////////////////////////////////////////
//                             Hunter part code                               //
////////////////////////////////////////////////////////////////////////////////
public command_arrow(id) 
{
 
	if(!is_user_alive(id)) return PLUGIN_HANDLED
 
 
	new Float: Origin[3], Float: Velocity[3], Float: vAngle[3], Ent
 
	entity_get_vector(id, EV_VEC_origin , Origin)
	entity_get_vector(id, EV_VEC_v_angle, vAngle)
 
	Ent = create_entity("info_target")
 
	if (!Ent) return PLUGIN_HANDLED
 
	entity_set_string(Ent, EV_SZ_classname, "xbow_arrow")
	entity_set_model(Ent, cbow_bolt)
 
	new Float:MinBox[3] = {-2.8, -2.8, -0.8}
	new Float:MaxBox[3] = {2.8, 2.8, 2.0}
	entity_set_vector(Ent, EV_VEC_mins, MinBox)
	entity_set_vector(Ent, EV_VEC_maxs, MaxBox)
 
	vAngle[0]*= -1
	Origin[2]+=10
 
	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, 1)
	entity_set_int(Ent, EV_INT_movetype, 5)
	entity_set_edict(Ent, EV_ENT_owner, id)
	new Float:dmg = get_cvar_float("diablo_arrow") + player_intelligence[id] * get_cvar_float("diablo_arrow_multi")
	entity_set_float(Ent, EV_FL_dmg,dmg)
 
	VelocityByAim(id, get_cvar_num("diablo_arrow_speed") , Velocity)
	set_rendering (Ent,kRenderFxGlowShell, 255,0,0, kRenderNormal,56)
	entity_set_vector(Ent, EV_VEC_velocity ,Velocity)
 
	return PLUGIN_HANDLED
}
 
public command_bow(id) 
{
        if(!is_user_alive(id)) return PLUGIN_HANDLED
 
        if(bow[id] == 1){
                entity_set_string(id,EV_SZ_viewmodel,cbow_VIEW)
                entity_set_string(id,EV_SZ_weaponmodel,cvow_PLAYER)
		bowdelay[id] = get_gametime()
        }else if(player_sword[id] == 1)
	{
		entity_set_string(id, EV_SZ_viewmodel, SWORD_VIEW)  
		entity_set_string(id, EV_SZ_weaponmodel, SWORD_PLAYER)  
		bow[id]=0
	}
	else
	{
                entity_set_string(id,EV_SZ_viewmodel,KNIFE_VIEW)
                entity_set_string(id,EV_SZ_weaponmodel,KNIFE_PLAYER)
		bow[id]=0
        }
        return PLUGIN_CONTINUE
}
 
public toucharrow(arrow, id)
{	
	new kid = entity_get_edict(arrow, EV_ENT_owner)
	new lid = entity_get_edict(arrow, EV_ENT_enemy)
 
	if(is_user_alive(id)) 
	{
		if(kid == id || lid == id) return
 
		entity_set_edict(arrow, EV_ENT_enemy,id)
 
		new Float:dmg = entity_get_float(arrow,EV_FL_dmg)
		entity_set_float(arrow,EV_FL_dmg,(dmg*3.0)/5.0)
 
		if(get_cvar_num("mp_friendlyfire") == 0 && get_user_team(id) == get_user_team(kid)) return
 
		Effect_Bleed(id,248)
 
		bowdelay[kid] -=  0.5 - floatround(player_intelligence[kid]/5.0)
 
		change_health(id,floatround(-dmg),kid,"knife")
 
		message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id); 
		write_short(7<<14); 
		write_short(1<<13); 
		write_short(1<<14); 
		message_end();
 
		if(get_user_team(id) == get_user_team(kid)) 
		{
			new name[33]
			get_user_name(kid,name,32)
			client_print(0,print_chat,"%s attacked a teammate",name)
		}
 
		emit_sound(id, CHAN_ITEM, "weapons/knife_hit4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
		if(dmg<30) remove_entity(arrow)
	}
}
 
public touchWorld2(arrow, world)
{
	remove_entity(arrow)
}
 
public hunter_Line(id,vid,end[3])
{
	if(is_user_alive(id) && is_user_alive(vid) && trace_bool[id])
	{
		new start[3]
		get_user_origin(vid,start)
 
		message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id)
		write_byte(0)
		write_coord(start[0])	// starting pos
		write_coord(start[1])
		write_coord(start[2])
		write_coord(end[0])	// ending pos
		write_coord(end[1])
		write_coord(end[2])
		write_short(sprite_line)	// sprite index
		write_byte(1)		// starting frame
		write_byte(5)		// frame rate
		write_byte(100)		// life
		write_byte(1)		// line width
		write_byte(0)		// noise
		write_byte(200)	// RED
		write_byte(100)	// GREEN
		write_byte(100)	// BLUE					
		write_byte(75)		// brightness
		write_byte(5)		// scroll speed
		message_end()
 
		new parms[5];
 
		for(new i=0;i<3;i++)
		{
			parms[i] = start[i] 
		}
		parms[3]=id
		parms[4]=vid
 
		set_task(0.20,"charge_hunter",id+TARACE_TASK+vid*100,parms,5)
	}
}
 
public charge_hunter(parms[])
{
	new stop[3]
 
	for(new i=0;i<3;i++)
	{
		stop[i] =parms[i]
	}
	hunter_Line(parms[3],parms[4],stop)
}
 
public grenade_throw(id, ent, wID)
{	
	if(!g_TrapMode[id] || !is_valid_ent(ent))
		return PLUGIN_CONTINUE
 
	new Float:fVelocity[3]
	VelocityByAim(id, cvar_throw_vel, fVelocity)
	entity_set_vector(ent, EV_VEC_velocity, fVelocity)
 
	new Float: angle[3]
	entity_get_vector(ent,EV_VEC_angles,angle)
	angle[0]=0.00
	entity_set_vector(ent,EV_VEC_angles,angle)
 
	entity_set_float(ent,EV_FL_dmgtime,get_gametime()+3.5)
 
	entity_set_int(ent, NADE_PAUSE, 0)
	entity_set_int(ent, NADE_ACTIVE, 0)
	entity_set_int(ent, NADE_VELOCITY, 0)
	entity_set_int(ent, NADE_TEAM, get_user_team(id))
 
	new param[1]
	param[0] = ent
	set_task(3.0, "task_ActivateTrap", 0, param, 1)
 
	return PLUGIN_CONTINUE
}
 
public task_ActivateTrap(param[])
{
	new ent = param[0]
	if(!is_valid_ent(ent)) 
		return PLUGIN_CONTINUE
 
	entity_set_int(ent, NADE_PAUSE, 1)
	entity_set_int(ent, NADE_ACTIVE, 1)
 
	new Float:fOrigin[3]
	entity_get_vector(ent, EV_VEC_origin, fOrigin)
	fOrigin[2] -= 8.1*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[entity_get_edict(ent,EV_ENT_owner)])))
	entity_set_vector(ent, EV_VEC_origin, fOrigin)
 
	return PLUGIN_CONTINUE
}
 
public think_Grenade(ent)
{
	new entModel[33]
	entity_get_string(ent, EV_SZ_model, entModel, 32)
 
	if(!is_valid_ent(ent) || equal(entModel, "models/w_c4.mdl"))
		return PLUGIN_CONTINUE
 
	if(entity_get_int(ent, NADE_PAUSE))
		return PLUGIN_HANDLED
 
	return PLUGIN_CONTINUE
}
 
public think_Bot(bot)
{
	new ent = -1
	while((ent = find_ent_by_class(ent, "grenade")))
	{
		new entModel[33]
		entity_get_string(ent, EV_SZ_model, entModel, 32)
 
		if(equal(entModel, "models/w_c4.mdl"))
			continue
 
		if(!entity_get_int(ent, NADE_ACTIVE))
			continue
 
		new Players[32], iNum
		get_players(Players, iNum, "a")
 
		for(new i = 0; i < iNum; ++i)
		{
			new id = Players[i]
			if(entity_get_int(ent, NADE_TEAM) == get_user_team(id)) 
				continue
 
			if(get_entity_distance(id, ent) > cvar_activate_dis || player_speed(id) <200.0) 
				continue
 
			if(entity_get_int(ent, NADE_VELOCITY)) continue
 
			new Float:fOrigin[3]
			entity_get_vector(ent, EV_VEC_origin, fOrigin)
			while(PointContents(fOrigin) == CONTENTS_SOLID)
				fOrigin[2] += 100.0
 
			entity_set_vector(ent, EV_VEC_origin, fOrigin)
			drop_to_floor(ent)
 
			new Float:fVelocity[3]
			entity_get_vector(ent, EV_VEC_velocity, fVelocity)
			fVelocity[2] += float(cvar_nade_vel)
			entity_set_vector(ent, EV_VEC_velocity, fVelocity)
			entity_set_int(ent, NADE_VELOCITY, 1)
 
			new param[1]
			param[0] = ent 
			//set_task(cvar_explode_delay, "task_ExplodeNade", 0, param, 1)
			entity_set_float(param[0], EV_FL_nextthink, halflife_time() + cvar_explode_delay)
			entity_set_int(param[0], NADE_PAUSE, 0)
		}
	}
	if(get_timeleft()<2 && map_end<2)
	{
		map_end=2
	}
	else if(get_timeleft()<6 && map_end<1)
	{
		new play[32],num
 
		get_players(play,num)
 
		for(new i=0;i<num;i++)
		{
			savexpcom(play[i])
		}
		map_end=1
	}
 
	entity_set_float(bot, EV_FL_nextthink, halflife_time() + 0.1)
}
 
stock Float:player_speed(index) 
{
	new Float:vec[3]
 
	pev(index,pev_velocity,vec)
	vec[2]=0.0
 
	return floatsqroot ( vec[0]*vec[0]+vec[1]*vec[1] )
}
 
public _create_ThinkBot()
{
	new think_bot = create_entity("info_target")
	if(!is_valid_ent(think_bot))
		log_amx("For some reason, the universe imploded, reload your server")
	else 
	{
		entity_set_string(think_bot, EV_SZ_classname, "think_bot")
		entity_set_float(think_bot, EV_FL_nextthink, halflife_time() + 1.0)
	}
}
 
public change_health(id,hp,attacker,weapon[])
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		new health = get_user_health(id)
		if(hp>0)
		{
			new m_health = race_heal[player_class[id]]+player_strength[id]*1
			if(player_item_id[id]==17 &&hp>0)
			{
				set_user_health(id,health+floatround(float(hp/10),floatround_floor)+1)
			}
			else if (hp+health>m_health) set_user_health(id,m_health)
			else set_user_health(id,get_user_health(id)+hp)
		}
		else
		{
			if(health+hp<1)
			{
				UTIL_Kill(attacker,id,weapon)
			}
			else set_user_health(id,get_user_health(id)+hp)
		}
 
		if(id!=attacker && hp<0) 
		{
			player_dmg[attacker]-=hp
			dmg_exp(attacker)
		}
	}
}
 
public UTIL_Kill(attacker,id,weapon[])
{
	if( is_user_alive(id)){
		if(get_user_team(attacker)!=get_user_team(id))
			set_user_frags(attacker,get_user_frags(attacker) +1);
 
		if(get_user_team(attacker)==get_user_team(id))
			set_user_frags(attacker,get_user_frags(attacker) -1);
 
		if (cs_get_user_money(attacker) + 150 <= 16000)
			cs_set_user_money(attacker,cs_get_user_money(attacker)+150)
		else
			cs_set_user_money(attacker,16000)
 
		cs_set_user_deaths(id, cs_get_user_deaths(id)+1)
		user_kill(id,1) 
 
		if(is_user_connected(attacker) && attacker!=id)
		{
			award_kill(attacker,id)
			if(is_user_alive(attacker)) award_item(attacker,0)
		}
 
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) 
		write_byte(attacker) 
		write_byte(id) 
		write_byte(0) 
		write_string(weapon) 
		message_end() 
 
		message_begin(MSG_ALL,gmsgScoreInfo) 
		write_byte(attacker) 
		write_short(get_user_frags(attacker)) 
		write_short(get_user_deaths(attacker)) 
		write_short(0) 
		write_short(get_user_team(attacker)) 
		message_end() 
 
		message_begin(MSG_ALL,gmsgScoreInfo) 
		write_byte(id) 
		write_short(get_user_frags(id)) 
		write_short(get_user_deaths(id)) 
		write_short(0) 
		write_short(get_user_team(id)) 
		message_end() 
 
		new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
 
		get_user_name(attacker, kname, 31);
		get_user_team(attacker, kteam, 9);
		get_user_authid(attacker, kauthid, 31);
 
		get_user_name(id, vname, 31);
		get_user_team(id, vteam, 9);
		get_user_authid(id, vauthid, 31);
 
		log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", 
		kname, get_user_userid(attacker), kauthid, kteam, 
		vname, get_user_userid(id), vauthid, vteam, weapon);
	}
}
 
 
stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
	message_begin( MSG_ONE, g_msg_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 Display_Icon(id ,enable ,name[] ,red,green,blue)
{
	if (!pev_valid(id) || is_user_bot(id))
	{
		return PLUGIN_HANDLED
	}
//	new string [8][32] = {"dmg_rad","item_longjump","dmg_shock","item_healthkit","dmg_heat","suit_full","cross","dmg_gas"}
 
	message_begin( MSG_ONE, g_msg_statusicon, {0,0,0}, id ) 
	write_byte( enable ) 	
	write_string( name ) 
	write_byte( red ) // red 
	write_byte( green ) // green 
	write_byte( blue ) // blue 
	message_end()
 
	return PLUGIN_CONTINUE
}
 
public createBlockAiming(id)
{
 
	new Float:vOrigin[3];
	new Float:vAngles[3]
	entity_get_vector(id,EV_VEC_v_angle,vAngles)
	entity_get_vector(id,EV_VEC_origin,vOrigin)
	new Float:offset = distance_to_floor(vOrigin)
	vOrigin[2]+=17.0-offset
	//create the block
 
	if(vAngles[1]>45.0&&vAngles[1]<135.0)
	{
		vOrigin[0]+=0.0
		vOrigin[1]+=34.0
		if(chacke_pos(vOrigin,0)==0) return
		make_shild(id,vOrigin,vAngles1,gfBlockSizeMin1,gfBlockSizeMax1)
	}
	else if(vAngles[1]<-45.0&&vAngles[1]>-135.0)
	{
		vOrigin[0]+=0.0
		vOrigin[1]+=-34.0
		if(chacke_pos(vOrigin,0)==0) return
		make_shild(id,vOrigin,vAngles1,gfBlockSizeMin1,gfBlockSizeMax1)
	}
	else if(vAngles[1]>-45.0&&vAngles[1]<45.0)
	{
		vOrigin[0]+=34.0
		vOrigin[1]+=0.0
		if(chacke_pos(vOrigin,1)==0) return
		make_shild(id,vOrigin,vAngles2,gfBlockSizeMin2,gfBlockSizeMax2)
	}
	else
	{
		vOrigin[0]+=-34.0
		vOrigin[1]+=0.0
		if(chacke_pos(vOrigin,1)==0) return
		make_shild(id,vOrigin,vAngles2,gfBlockSizeMin2,gfBlockSizeMax2)
	}
}
 
public make_shild(id,Float:vOrigin[3],Float:vAngles[3],Float:gfBlockSizeMin[3],Float:gfBlockSizeMax[3])
{
	new ent = create_entity("info_target")
 
	//make sure entity was created successfully
	if (is_valid_ent(ent))
	{
		//set block properties
		entity_set_string(ent, EV_SZ_classname, "dbmod_shild")
		entity_set_int(ent, EV_INT_solid, SOLID_BBOX)
		entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE)
		entity_set_float(ent,EV_FL_health,50.0+float(player_intelligence[id]*2))
		entity_set_float(ent,EV_FL_takedamage,1.0)
 
		entity_set_model(ent, "models/diablomod/bm_block_platform.mdl");
		entity_set_vector(ent, EV_VEC_angles, vAngles)
		entity_set_size(ent, gfBlockSizeMin, gfBlockSizeMax)
 
		entity_set_edict(ent,EV_ENT_euser1,id)
 
		entity_set_origin(ent, vOrigin)
 
		num_shild[id]--
 
		return 1
	}
	return 0
}
 
public call_cast(id)
{
 
	set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2)
 
	switch(player_class[id])
	{
		case Mag:
		{
			show_hudmessage(id, "Wyczarowales Ognista Kule.") 
			fired[id]=0
			item_fireball(id)
		}
		case Mnich:
		{
			if(num_shild[id])
			{
				show_hudmessage(id, "Wyczarowales magiczna sciane.") 
				createBlockAiming(id)
			}
			else show_hudmessage(id, "Nie mozesz wiecej wyczarowac magicznych scian!") 
		}
		case Paladyn:
		{
 
			golden_bulet[id]++
			if(golden_bulet[id]>3)
			{
				golden_bulet[id]=3
				show_hudmessage(id, "Mozesz miec maxymalnie 3 magiczne pociski",golden_bulet[id]) 
			}
			else if(golden_bulet[id]==1)show_hudmessage(id, "Masz 1 magiczny pocisk") 
			else if(golden_bulet[id]>1)show_hudmessage(id, "Masz %i magiczne pociski",golden_bulet[id]) 
		}
		case Zabojca:
		{
			show_hudmessage(id, "Jestes tymczasowo niewidzialny.") 
			invisible_cast[id]=1
			set_renderchange(id)
		}
		case Ninja:
		{
			show_hudmessage(id, "Zwiekszyles sobie tymczasowo predkosc") 
			set_user_maxspeed(id,get_user_maxspeed(id)+25.0)
		}
		case Barbarzynca:
		{
			ultra_armor[id]++
			if(ultra_armor[id]>7)
			{
				ultra_armor[id]=7
				show_hudmessage(id, "Pancerz wytrzyma maksymalnie do 7 strzalow",ultra_armor[id]) 
			}
			else show_hudmessage(id, "Magiczny pancerz wytrzyma %i strzalow",ultra_armor[id]) 
		}
		case Hunter: fm_give_item(id, "weapon_hegrenade")
	}	
}
 
public chacke_pos(Float:vOrigin[3],axe)
{
	new test=0
	vOrigin[axe]-=15.0
	if(distance_to_floor(vOrigin)<31.0) test++
	vOrigin[axe]+=15.0
	if(distance_to_floor(vOrigin)<31.0) test++
	vOrigin[axe]+=15.0
	if(distance_to_floor(vOrigin)<31.0) test++
	if(test<2) return 0
	vOrigin[axe]-=15.0
	return 1
}
 
public fw_traceline(Float:vecStart[3],Float:vecEnd[3],ignoreM,id,trace) // pentToSkip == id, for clarity
 {
 
	if(!is_user_connected(id))
		return FMRES_IGNORED;
 
	// not a player entity, or player is dead
	if(!is_user_alive(id))
		return FMRES_IGNORED;
 
	new hit = get_tr2(trace, TR_pHit)	
 
	// not shooting anything
	if(!(pev(id,pev_button) & IN_ATTACK))
		return FMRES_IGNORED;
 
	new h_bulet=0
 
	if(golden_bulet[id]>0) 
	{
		golden_bulet[id]--
		h_bulet=1
	}
 
	if(is_valid_ent(hit))
	{
		new name[64]
		entity_get_string(hit,EV_SZ_classname,name,63)
 
		if(equal(name,"dbmod_shild"))
		{
			new Float: ori[3]
			entity_get_vector(hit,EV_VEC_origin,ori)
			set_tr2(trace,TR_vecEndPos,vecEnd)
			if(after_bullet[id]>0)
			{			
				new Float: health=entity_get_float(hit,EV_FL_health)
				entity_set_float(hit,EV_FL_health,health-3.0)
				if(health-1.0<0.0) remove_entity(hit)
				after_bullet[id]--
			}
			set_tr2(trace,TR_iHitgroup,8);
			set_tr2(trace,TR_flFraction,1.0);
			return FMRES_SUPERCEDE;
		}
	}	
 
	if(is_user_alive(hit))
	{
		if(h_bulet)
		{
			set_tr2(trace, TR_iHitgroup, HIT_HEAD) // Redirect shot to head
 
			// Variable angles doesn't really have a use here.
			static hit, Float:head_origin[3], Float:angles[3]
 
			hit = get_tr2(trace, TR_pHit) // Whomever was shot
			engfunc(EngFunc_GetBonePosition, hit, 8, head_origin, angles) // Find origin of head bone (8)
 
			set_tr2(trace, TR_vecEndPos, head_origin) // Blood now comes out of the head!
		}
 
		if(ultra_armor[hit]>0 ||random_num(0,player_ultra_armor_left[hit])==1)
		{
			if(after_bullet[id]>0)
			{
				if(ultra_armor[hit]>0) ultra_armor[hit]--
				else if(player_ultra_armor_left[hit]>0)player_ultra_armor_left[hit]--
				after_bullet[id]--
			}
			set_tr2(trace, TR_iHitgroup, 8)
		}
		return FMRES_IGNORED
	}
 
	return FMRES_IGNORED;
}
 
stock Float:distance_to_floor(Float:start[3], ignoremonsters = 1) {
    new Float:dest[3], Float:end[3];
    dest[0] = start[0];
    dest[1] = start[1];
    dest[2] = -8191.0;
 
    engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, 0, 0);
    get_tr2(0, TR_vecEndPos, end);
 
    //pev(index, pev_absmin, start);
    new Float:ret = start[2] - end[2];
 
    return ret > 0 ? ret : 0.0;
}
 
public dmg_exp(id)
{
	new min=get_cvar_num("diablo_dmg_exp")
	if(min<1) return
	new exp=0
	while(player_dmg[id]>min)
	{
		player_dmg[id]-=min
		exp++
	}
	Give_Xp(id,exp)
}
 
/*============================================
Admin moze dawac graczom itemy [amx_giveitem]
==============================================*/
 
public giveitem(id, level, cid) 
{ 
        if(!cmd_access(id,level, cid, 3)) 
                return PLUGIN_HANDLED; 
 
        new szName[32]; 
        read_argv(1, szName, 31); 
        new iTarget=cmd_target(id,szName,0); 
        if(iTarget)
        { 
                get_user_name(iTarget, szName, 31); 
                new szItem[10], iItem; 
                read_argv(2, szItem, 9); 
                iItem=str_to_num(szItem); 
                client_print(id, print_console, "Gracz: %s otrzymał item nr: %d",szName, iItem); 
                award_item(iTarget, iItem); 
                set_gravitychange(iTarget)
                set_speedchange(iTarget)
                set_renderchange(iTarget)
        } 
        return PLUGIN_HANDLED 
}
 
/*============================================
Admin moze dawac graczom exp [amx_giveexp]
==============================================*/
 
public giveexp(id, level, cid) 
{ 
        if(!cmd_access(id,level, cid, 3)) 
                return PLUGIN_HANDLED; 
 
        new szPlayer[32]; 
        read_argv(1,szPlayer, 31); 
        new iTarget=cmd_target(id,szPlayer,0); 
        if(iTarget)
        { 
                new szExp[10], iExp; 
                read_argv(2, szExp, 9); 
                iExp=str_to_num(szExp);
                new szName[32]
                get_user_name(iTarget, szName, sizeof szName - 1)
                console_print(id, "Gracz: %s otrzymał: % exp'a",szName, iExp); 
                Give_Xp(iTarget,iExp)
        } 
        return PLUGIN_HANDLED 
}
 
/*============================================
Gracze moga przekazywac sobie itemy [say /daj]
==============================================*/
 
public plugin_natives(){
    register_library("DiabloMod_Items");
    register_native("diablo_send_user_item", "_diablo_send_user_item");
    register_native("diablo_get_user_item", "_diablo_get_user_item");
 
}
public _diablo_get_user_item(plugin, params){
    if(params != 1)
        return 0;
    new id = get_param(1);
    if(!is_user_connected(id))
        return 0;
    return player_item_id[id];
}
public _diablo_send_user_item(plugin, params){
    if(params != 2)
        return 0;
    new id = get_param(1);
    if(!is_user_connected(id))
        return 0
    new id2 = get_param(2);
    if(!is_user_connected(id2))
        return 0
    if(player_item_id[id] == 0)
        return 0;
 
    dropitem(id2);
    award_item(id2, player_item_id[id]);
 
    item_boosted[id2] = item_boosted[id]
    item_durability[id2] = item_durability[id]
    jumps[id2] = jumps[id]
    gravitytimer[id2] = gravitytimer[id]
    player_b_vampire[id2] = player_b_vampire[id]    //Vampyric damage
    player_b_damage[id2] = player_b_damage[id]        //Bonus damage
    player_b_money[id2] = player_b_money[id]        //Money bonus
    player_b_gravity[id2] = player_b_gravity[id]    //Gravity bonus : 1 = best
    player_b_inv[id2] = player_b_inv[id]        //Invisibility bonus
    player_b_grenade[id2] = player_b_grenade[id]    //Grenade bonus = 1/chance to kill
    player_b_reduceH[id2] = player_b_reduceH[id]    //Reduces player health each round start
    player_b_theif[id2] = player_b_theif[id]        //Amount of money to steal
    player_b_respawn[id2] = player_b_respawn[id]    //Chance to respawn upon death
    player_b_explode[id2] = player_b_explode[id]    //Radius to explode upon death
    player_b_heal[id2] = player_b_heal[id]        //Ammount of hp to heal each 5 second
    player_b_blind[id2] = player_b_blind[id]        //Chance 1/Value to blind the enemy
    player_b_fireshield[id2] = player_b_fireshield[id]    //Protects against explode and grenade bonus
    player_b_meekstone[id2] = player_b_meekstone[id]    //Ability to lay a fake c4 and detonate
    player_b_teamheal[id2] = player_b_teamheal[id]    //How many hp to heal when shooting a teammate
    player_b_redirect[id2] = player_b_redirect[id]    //How much damage will the player redirect
    player_b_fireball[id2] = player_b_fireball[id]    //Ability to shot off a fireball value = radius *
    player_b_ghost[id2] = player_b_ghost[id]    //Ability to walk through walls
    player_b_eye[id2] = player_b_eye[id]             //Ability to snarkattack
    player_b_blink[id2] = player_b_blink[id]    //Abiliy to use railgun
    player_b_windwalk[id2] = player_b_windwalk[id]    //Ability to windwalk
    player_b_usingwind[id2] = player_b_usingwind[id]    //Is player using windwalk
    player_b_froglegs[id2] = player_b_froglegs[id]
    player_b_silent[id2] = player_b_silent[id]
    player_b_dagon[id2] = player_b_dagon[id]        //Abliity to nuke opponents
    player_b_sniper[id2] = player_b_sniper[id]        //Ability to kill faster with scout
    player_b_jumpx[id2] = player_b_jumpx[id]
    player_b_smokehit[id2] = player_b_smokehit[id]
    player_b_extrastats[id2] = player_b_extrastats[id]
    player_b_firetotem[id2] =player_b_firetotem[id]
    player_b_hook[id2] = player_b_hook[id]
    player_b_darksteel[id2] = player_b_darksteel[id]
    player_b_illusionist[id2] = player_b_illusionist[id]
    player_b_mine[id2] = player_b_mine[id]
    wear_sun[id2] = wear_sun[id]
    player_sword[id2] = player_sword[id]
    player_ultra_armor_left[id2]=player_ultra_armor_left[id]
    player_ultra_armor[id2]=player_ultra_armor[id]
 
    dropitem(id);
 
    return 1;
}