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 131745167013249 dodana przez speedkill, 01.10.2011 07:47
Typ:


131745167013249
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.
#include <amxmodx>
#include <engine>
#include <fun>
#include <cstrike>
#include <amxmisc>
#include <fakemeta>
 
new Float:TEST_TIME=0.1
new Float:WARN_TIME=1.0
new Float:FLASH_TIME=0.8
 
#define MAX_ZONES 8
new MIN_PLAYERS=2		/*Dobre do testowania w mniej osob
lub gdy chcesz by koniec rashu byl
przy wiekszej liczbbie osob*/
#define TASK_ZONE 600743
#define TASK_LOOP 500743
#define TASK_VIEW 400743
#define TASK_INFO 300743
#define TASK_FLASH 200743
 
new mUsuwaniestrefy // Menu
new mcbUsuwaniestrefy // Menu Callback
new mZapisacstrefy // Menu
new mcbZapisacstrefy // Menu Callback
new mAntirushControlMenu // Menu
new mcbAntirushControlMenu // Menu Callback
//Uzylem generatora i takie malo eleganckie wyszlo
 
new map_cors_edit[MAX_ZONES*6]
new zones_edit
new zone_editing=0
new map_editor
new map_cors_file_line=127
new zone_incresment=10
new zone_coords_num=0
new zone_coords[3][13] = { "Koordynat X", "Koordynat Y", "Koordynat Z"}
new editign=0
new edit_g_team[3]
new round_start=0
new lines
 
new gMsgScreenFade
new rasher[33]=0
new raszer[33]
new flashed[33]=0
new sounded[33]=0
new speed_limit[33]=0
new Float:g_time
new g_team[3]
new g_origin[3]
new map_cors_pre=2
new map_cors_origin[MAX_ZONES*6]
new slap
new warn_control = 0 // miczu
new zones = 0
 
new zone_color_aktiv[3] = { 0, 0, 255 }
new zone_color_red[3] = { 0, 255, 0 }
new zone_color_yellow[3] = { 255, 255, 0 }
new spr_dot
new spr_dot1
new spr_dot2
 
new actions[11][32] = { "barney/donthurtem.wav","nihilanth/nil_now_die.wav","hgrunt/c2a3_hg_laugh.wav","hgrunt/silence!.wav","hgrunt/silence!.wav","barney/whatsgoingon.wav","barney/rightway.wav","barney/nosir.wav","barney/openfire.wav","barney/stophere.wav","hgrunt/c2a2_hg_chat5a.wav"}
 
public plugin_init()
{	
	register_plugin("M_AntiRusher","2.5d","Miczu")
	log_amx(" <<Uruchomiono M_Antirusher 2.5d>>")
 
	register_dictionary("M_antirusher.txt")
	register_dictionary("common.txt")
 
	register_clcmd("say /rules","info")
	register_clcmd("say /antirusher_menu","amx_antirusher_menu")
 
	register_cvar("Antirusher", "2.5d",FCVAR_SERVER)
	register_cvar("amx_antirusher","1")			
	register_cvar("amx_antirusher_sound","1")		
	register_cvar("amx_antirusher_sound_mode","0")
	register_cvar("amx_antirusher_warn","1")
	register_cvar("amx_antirusher_slap","3")		
	register_cvar("amx_antirusher_time","60.0")		
	register_cvar("amx_antirusher_freq","0.1")
	register_cvar("amx_antirusher_action","7")
	register_cvar("amx_antirusher_cash","50")		
	register_cvar("amx_antirusher_cash_end","2")		
	register_cvar("amx_antirusher_immunity","0")	
	register_cvar("amx_antirusher_zasady","1")
	register_cvar("amx_antirusher_people","2")
 
	register_event("HLTV","Event_StartRound","a","1=0","2=0")
	register_event("RoundTime","event_roundtime","bc")
	register_event("SendAudio", "bomb_planted", "a", "2&%!MRAD_BOMBPL")
	register_event("DeathMsg","DeathMsg","ade") 
	register_event("CurWeapon","CurWeapon","be") 
 
	gMsgScreenFade = get_user_msgid("ScreenFade") 
	map_cors_pre = map_cors_present(map_cors_origin,g_team)
	TEST_TIME=get_cvar_float("amx_antirusher_freq")
 
	register_menucmd(register_menuid("Antirush Menu"), 1023, "Antirush_menu")
	register_menucmd(register_menuid("Punishment Menu"), 1023, "Punishment_menu")
	register_menucmd(register_menuid("Antirush Zone Creator"), 1023, "Antirush_Zone_Creator")
	register_menucmd(register_menuid("Edit Zone"), 1023, "edit_zone2")
 
	mAntirushControlMenu = menu_create("Antirush Control Menu", "mh_AntirushControlMenu")
	mcbAntirushControlMenu = menu_makecallback("mcb_AntirushControlMenu")
	menu_additem(mAntirushControlMenu, "Antirush cvar control", "ma_AntirushControlMenu", ADMIN_CVAR, mcbAntirushControlMenu)
	menu_additem(mAntirushControlMenu, "Antirush Punishments", "ma_AntirushControlMenu", ADMIN_CVAR, mcbAntirushControlMenu)
	menu_additem(mAntirushControlMenu, "Antirush Zone Creator", "ma_AntirushControlMenu", ADMIN_RCON, mcbAntirushControlMenu)
 
	mZapisacstrefy = menu_create("Zapisac strefy", "mh_Zapisacstrefy")
	mcbZapisacstrefy = menu_makecallback("mcb_Zapisacstrefy")
	menu_additem(mZapisacstrefy, "TAK", "ma_Zapisacstrefy", ADMIN_ALL, mcbZapisacstrefy)
	menu_additem(mZapisacstrefy, "NIE", "ma_Zapisacstrefy", ADMIN_ALL, mcbZapisacstrefy)
 
	mUsuwaniestrefy = menu_create("Usuwanie strefy", "mh_Usuwaniestrefy")
	mcbUsuwaniestrefy = menu_makecallback("mcb_Usuwaniestrefy")
	menu_additem(mUsuwaniestrefy, "TAK", "ma_Usuwaniestrefy", ADMIN_ALL, mcbUsuwaniestrefy)
	menu_additem(mUsuwaniestrefy, "NIE", "ma_Usuwaniestrefy", ADMIN_ALL, mcbUsuwaniestrefy)
 
	require_module("fakemeta")
 
	require_module("engine")
	require_module("fun")
	require_module("cstrike")
 
	return PLUGIN_CONTINUE
}
 
public plugin_precache() {
	spr_dot = precache_model("sprites/strefa1.spr")
	spr_dot1 = precache_model("sprites/strefa2.spr")
	spr_dot2 = precache_model("sprites/strefa3.spr")
}
 
///////////////////////////////////////////////////////////////////////
/////////                M_Antirusher  Events                 /////////
////////////////////////////////////////////////////////////////////////
 
public client_connect(id){
	free_the_man(id)		//nie chcemy by ktos kto sie polaczy byl karany
}					//kiedy osoba co opuszczajac serwer miala kare
//czyli gdy stary i nowy gracz beda mieli te same id
 
public client_disconnect(id) {
	free_the_man(id)		//tak na wszelki wypadek, ale mozna sobie odpuscic
	return PLUGIN_CONTINUE
}
 
public Event_StartRound(){
	round_start++				
	MIN_PLAYERS = get_cvar_num("amx_antirusher_people")	// zmiana people dziala na starcie rundy
}
 
public client_putinserver(id){ 		//tu informacja o rashu
	new arg[1] 			//Zoptymalizowane uzycie set_task
	arg[0]=id			//Deklaracja 1 kumurki pamieci zamiast 4 i bez zmian z str-> num i na odwrot
 
	if (map_cors_pre && get_cvar_num("amx_antirusher"))
		set_task(45.0,"informclient",TASK_INFO+id,arg,1) 
} 
 
public bomb_planted() {			//podlozono bombe
	remove_task(TASK_LOOP)		//przerywa sprawdzanie rashu
	remove_task(TASK_VIEW)		//przerywa wyswietlanie granic dla userow	
	free_the_world()		//mozna rashowac
}
 
public event_roundtime() {
	if (round_start<1) return PLUGIN_CONTINUE 	//takie zabezpieczenie by nie sprawdzalo po czasie rashu
	if (map_cors_pre && get_cvar_num("amx_antirusher")) {
		slap = floatround(get_cvar_num("amx_antirusher_slap")*(10.0*TEST_TIME)) // slapy biora zawsze tyle samo hp w przedziale czasu
		remove_task(TASK_LOOP)
		remove_task(TASK_VIEW)
		g_time = get_gametime() + get_cvar_float("amx_antirusher_time")
		set_task(2*TEST_TIME, "checkOrigin",TASK_LOOP)
		set_task(2*WARN_TIME, "rash_warn",TASK_VIEW)
 
	}
	return PLUGIN_CONTINUE
}					//
 
public DeathMsg(){
	new vid = read_data(2)		//id trupa
	free_the_man(vid)		//uwalnia trupa by zaczol runde z czystym kontem
}
 
//////////////////////////////////////////////////////////////////////
/////////                M_Antirusher Things                 /////////
//////////////////////////////////////////////////////////////////////
 
map_cors_present(maporigin[MAX_ZONES*6],team[3]) {
 
	new zonefile[256],zonefile2[256]
 
	get_configsdir(zonefile, 255)
 
	if(is_linux_server()){
		format(zonefile2, 255, "%s/antirusher", zonefile)
		if(!(dir_exists(zonefile2))) mkdir (zonefile2)
		format(zonefile2, 255, "%s/antirusher/rush.cor", zonefile)
	}
	else{
		format(zonefile2, 255, "%s\antirusher", zonefile)
		if(!(dir_exists(zonefile2))) mkdir (zonefile2)
		format(zonefile2, 255, "%s\antirusher\rush.cor", zonefile)
	}
 
	if (file_exists(zonefile2)){	
 
		new readdata[512]
		new currentmap[32]
		get_mapname(currentmap,31)
		new map[32], len 
		new x11[16],x12[16],y11[16],y12[16],z11[16],z12[16]
		new x21[16],x22[16],y21[16],y22[16],z21[16],z22[16]
		new x31[16],x32[16],y31[16],y32[16],z31[16],z32[16]
		new x41[16],x42[16],y41[16],y42[16],z41[16],z42[16]
		new x51[16],x52[16],y51[16],y52[16],z51[16],z52[16]
		new x61[16],x62[16],y61[16],y62[16],z61[16],z62[16]
		new x71[16],x72[16],y71[16],y72[16],z71[16],z72[16]
		new x81[16],x82[16],y81[16],y82[16],z81[16],z82[16]
 
 
		for(new i=0; i < 128 && read_file(zonefile2,i,readdata,511,len); i++) {
			x11="";x12="";y11="";y12="";z11="";z12=""
			x21="";x22="";y21="";y22="";z21="";z22=""
			x31="";x32="";y31="";y32="";z31="";z32=""
			x41="";x42="";y41="";y42="";z41="";z42=""
			x51="";x52="";y51="";y52="";z51="";z52=""
			x61="";x62="";y61="";y62="";z61="";z62=""
			parse(readdata,team,2,map,31,x11,15,x12,15,y11,15,y12,15,z11,15,z12,15,
			x21,15,x22,15,y21,15,y22,15,z21,15,z22,15,
			x31,15,x32,15,y31,15,y32,15,z31,15,z32,15,
			x41,15,x42,15,y41,15,y42,15,z41,15,z42,15,
			x51,15,x52,15,y51,15,y52,15,z51,15,z52,15,
			x61,15,x62,15,y61,15,y62,15,z61,15,z62,15,
			x71,15,x72,15,y71,15,y72,15,z71,15,z72,15,
			x81,15,x82,15,y81,15,y82,15,z81,15,z82,15)
			lines=i
			if(equal(map,currentmap)) {
				maporigin[0] = str_to_num(x11)
				maporigin[1] = str_to_num(x12)
				maporigin[2] = str_to_num(y11)
				maporigin[3] = str_to_num(y12)
				maporigin[4] = str_to_num(z11)
				maporigin[5] = str_to_num(z12)
				maporigin[6] = str_to_num(x21)
				maporigin[7] = str_to_num(x22)
				maporigin[8] = str_to_num(y21)
				maporigin[9] = str_to_num(y22)
				maporigin[10] = str_to_num(z21)
				maporigin[11] = str_to_num(z22)
				maporigin[12] = str_to_num(x31)
				maporigin[13] = str_to_num(x32)
				maporigin[14] = str_to_num(y31)
				maporigin[15] = str_to_num(y32)
				maporigin[16] = str_to_num(z31)
				maporigin[17] = str_to_num(z32)
				maporigin[18] = str_to_num(x41)
				maporigin[19] = str_to_num(x42)
				maporigin[20] = str_to_num(y41)
				maporigin[21] = str_to_num(y42)
				maporigin[22] = str_to_num(z41)
				maporigin[23] = str_to_num(z42)
				maporigin[24] = str_to_num(x51)
				maporigin[25] = str_to_num(x52)
				maporigin[26] = str_to_num(y51)
				maporigin[27] = str_to_num(y52)
				maporigin[28] = str_to_num(z51)
				maporigin[29] = str_to_num(z52)
				maporigin[30] = str_to_num(x61)
				maporigin[31] = str_to_num(x62)
				maporigin[32] = str_to_num(y61)
				maporigin[33] = str_to_num(y62)
				maporigin[34] = str_to_num(z61)
				maporigin[35] = str_to_num(z62)
				maporigin[36] = str_to_num(x71)
				maporigin[37] = str_to_num(x72)
				maporigin[38] = str_to_num(y71)
				maporigin[39] = str_to_num(y72)
				maporigin[40] = str_to_num(z71)
				maporigin[41] = str_to_num(z72)
				maporigin[42] = str_to_num(x81)
				maporigin[43] = str_to_num(x82)
				maporigin[44] = str_to_num(y81)
				maporigin[45] = str_to_num(y82)
				maporigin[46] = str_to_num(z81)
				maporigin[47] = str_to_num(z82)
 
				map_cors_file_line=i
				for(new j=0;j<MAX_ZONES;j++){
					i=j*6
					if(((maporigin[1+i]-maporigin[0+i])>0)&&((maporigin[3+i]-maporigin[2+i])>0)&&((maporigin[5+i]-maporigin[4+i])>0))
						zones++
				}
 
				return 1
			}
			if((len<15)  && (map_cors_file_line>i)) map_cors_file_line=i
		}
		log_amx("%L",LANG_SERVER,"AR_NO_ZONE")
		if(lines+2<map_cors_file_line) map_cors_file_line=lines+2	//zapobiega zapisywaniu na 127 pozycji gdy nie ma wolnych lini na koncu :)
		return 0
	}
	else log_amx("%L",LANG_SERVER,"AR_NO_FILE")
	g_team="XX"
	map_cors_file_line=0			//nie ma pluku rush,cor wiec niech zapisze w pierwszej lini
	return 0
}
 
 
public info(id){
	new anti_zasady = get_cvar_num("amx_antirusher_zasady")
	if(anti_zasady==1){
		new map[4]
		get_mapname(map,3)		// rozpoznawanie typu mapy na podstawie pierwszych 3 liter :p
 
		if (equal(map,"cs_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_CS_MAP")
		else if (equal(map,"de_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_DE_MAP")
			else if (equal(map,"fy_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_FY_MAP")
			else if (equal(map,"aim")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_AIM_MAP")
			else if (equal(map,"awp")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_AWP_MAP")
			else if (equal(map,"kz_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_KZ_MAP")
			else if (equal(map,"fun")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_FUN_MAP")
			else if (equal(map,"sur")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_SURF_MAP")
			else if (equal(map,"sj_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_SJ_MAP")
			else if (equal(map,"ka_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_KA_MAP")
			else if (equal(map,"he_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_HE_MAP")
		}
}
 
public informclient(arg[1]){ 
	// arg[0] to id ^^
	if(is_user_connected(arg[0])) {	// spradza czy gracz nadal jest na serwie
		client_print(arg[0],print_chat,"%L",LANG_PLAYER,"AR_INFO_WARN")
		client_print(arg[0],print_chat,"%L",LANG_PLAYER,"AR_INFO_CLIENT",get_cvar_float("amx_antirusher_time")) 
	}
}
 
 
public checkOrigin() { 			// tu sprawdza czy rashujesz
 
	if (round_start<1) return
	if (get_gametime() > g_time)
	{
		free_the_world()
		return
	}
 
	new players[32], num,tt_num,ct_num
	get_players(players,num)
 
	for(new i=0;i<num;i++)
	{
		if(is_user_alive(players[i]))
		{
			if(cs_get_user_team(players[i])==CS_TEAM_T) tt_num++
			else if(cs_get_user_team(players[i])==CS_TEAM_CT) ct_num++
			}
	}
 
	if (tt_num<MIN_PLAYERS)
	{
		free_the_world()
		return
	}
	if (ct_num<MIN_PLAYERS)
	{
		free_the_world()
		return
	}
 
 
	get_players(players,num)
	set_task(TEST_TIME, "checkOrigin", TASK_LOOP)
	for(new i = 0; i < num; i++) 
	{
		if(is_user_alive(players[i]))
		{
			if((equal(g_team,"T")&&(cs_get_user_team(players[i])==CS_TEAM_T))||(equal(g_team,"CT")&&(cs_get_user_team(players[i])==CS_TEAM_CT))||equal(g_team,"XX"))
			{	
				get_user_origin(players[i],g_origin)
				if ((map_cors_origin[0] < g_origin[0] < map_cors_origin[1]) && (map_cors_origin[2] < g_origin[1] < map_cors_origin[3]) && (map_cors_origin[4] < g_origin[2] < map_cors_origin[5]) ||
				(map_cors_origin[6] < g_origin[0] < map_cors_origin[7]) && (map_cors_origin[8] < g_origin[1] < map_cors_origin[9]) && (map_cors_origin[10] < g_origin[2] < map_cors_origin[11]) ||
				(map_cors_origin[12] < g_origin[0] < map_cors_origin[13]) && (map_cors_origin[14] < g_origin[1] < map_cors_origin[15]) && (map_cors_origin[16] < g_origin[2] < map_cors_origin[17]) ||
				(map_cors_origin[18] < g_origin[0] < map_cors_origin[19]) && (map_cors_origin[20] < g_origin[1] < map_cors_origin[21]) && (map_cors_origin[22] < g_origin[2] < map_cors_origin[23]) ||
				(map_cors_origin[24] < g_origin[0] < map_cors_origin[25]) && (map_cors_origin[26] < g_origin[1] < map_cors_origin[27]) && (map_cors_origin[28] < g_origin[2] < map_cors_origin[29]) ||
				(map_cors_origin[30] < g_origin[0] < map_cors_origin[31]) && (map_cors_origin[32] < g_origin[1] < map_cors_origin[33]) && (map_cors_origin[34] < g_origin[2] < map_cors_origin[35])){
					punishPlayer(players[i])
					raszer[players[i]]=1
				}
				else{
					free_the_man(players[i])
				}
			}
		}
	}
}
 
public rash_warn(){				// tu sprawsza czy ma ci wyswietlic granice rashu
	if (get_gametime() > g_time){
		return
	}
	if (get_cvar_num("amx_antirusher_warn")==0) return
	new players[32], num, tt_num, ct_num
	get_players(players,num)
 
	for(new i=0;i<num;i++)
	{
		if(is_user_alive(players[i]))
		{
			if(cs_get_user_team(players[i])==CS_TEAM_T) tt_num++
			else if(cs_get_user_team(players[i])==CS_TEAM_CT) ct_num++
			}
	}
 
	if (equal(g_team,"CT")){
		if (tt_num<MIN_PLAYERS) return
		if (ct_num<MIN_PLAYERS) return
	} 
 
	set_task(WARN_TIME, "rash_warn",TASK_VIEW)
 
	new orrigins[3]
	for(new j=0;j<num;j++){
		if(raszer[players[j]]<1 && is_user_alive(players[j]))	 // jak juz raszuje to mozna graczowi odpuscic :)
		{		
			if((equal(g_team,"T")&&(cs_get_user_team(players[j])==CS_TEAM_T))||(equal(g_team,"CT")&&(cs_get_user_team(players[j])==CS_TEAM_CT))||equal(g_team,"XX"))
			{	
				get_user_origin(players[j],orrigins)
				for(new i=0;i<MAX_ZONES;i++){
					if((map_cors_origin[0+i*6]-450 < orrigins[0] < map_cors_origin[0+i*6]) && (map_cors_origin[2+i*6]-100 < orrigins[1] < map_cors_origin[3+i*6]+100) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
						zone_warn(players[j],i,0,orrigins)
					}
					else if((map_cors_origin[1+i*6] < orrigins[0] < map_cors_origin[1+i*6]+450) && (map_cors_origin[2+i*6]-100 < orrigins[1] < map_cors_origin[3+i*6]+100) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
						zone_warn(players[j],i,1,orrigins)
					}
					if((map_cors_origin[0+i*6]-100 < orrigins[0] < map_cors_origin[0+i*6+1]+100) && (map_cors_origin[2+i*6]-450 < orrigins[1] < map_cors_origin[2+i*6]) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
						zone_warn(players[j],i,2,orrigins)
					}
					else if((map_cors_origin[0+i*6]-100 < orrigins[0] < map_cors_origin[0+i*6+1]+100) && (map_cors_origin[3+i*6] < orrigins[1] < map_cors_origin[3+i*6]+450) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
						zone_warn(players[j],i,3,orrigins)
					}
				}			// nigdy nie bedziesz widzial przednia i tylna lub lewa i prawa sciane rownoczesnie wiec jest else
 
			}
		}
	}
}
 
///////////////////////////////////////////////////////////////////////////
/////////                M_Antirusher Punishments                 /////////
///////////////////////////////////////////////////////////////////////////
 
punishPlayer(id) {
 
	new action = 1
	action = get_cvar_num("amx_antirusher_action")	
	if ((get_cvar_num("amx_antirusher_immunity") == 1)&&(get_user_flags(id)&ADMIN_IMMUNITY)) {
		action = 0
	}
	switch (action) {
		case 0:{
			new name[32]
			get_user_name(id,name,31)
			server_cmd("amx_chat %L",LANG_SERVER,"AR_SRV_INFO", name)
		}
		case 1:	fakedamage ( id, "rashing", slap*1.0,16384)
			case 2: user_silentkill(id)
			case 3: kickPlayer(id)
			case 4: banPlayer(id)
			case 5:{
			if(speed_limit[id]==0){
				speed_limit[id]=1
				set_user_maxspeed(id,(get_user_maxspeed(id)/2.0));
			}
		}
		case 6:{
			if(flashed[id]==0){
				flashed[id]=1
				set_task(FLASH_TIME,"Flash",TASK_FLASH+id) 
			}
		}
		case 7:{
			new Float: velocity[3]
			new Float: DW //Długosc wektora
			entity_get_vector(id,EV_VEC_velocity,velocity)
			DW=vector_length ( velocity )+0.0001
			velocity[0]=(velocity[0]/DW)*(-500.0)
			velocity[1]=(velocity[1]/DW)*(-500.0)
			if(velocity[2]<0) velocity[2]=velocity[2]*(-1.0)+15.0 //wyrzuca do gory
			entity_set_vector(id,EV_VEC_velocity,velocity)	
		}
		case 8:{
			rasher[id]=1
		}
		case 9:{
			aim_on_me(id)
		}
		case 10:{
			ebay_time_to_pay(id)	// ogladalem filmik w flashu i to chyba przez to :p
		}
		default:{
			new name[32]
			get_user_name(id,name,31)
			server_cmd("amx_chat %L:p",LANG_SERVER,"AR_SRV_INFO", name)
		}
	}
	if (warn_control >(25/floatround(10.0*TEST_TIME))){	// jak dlugo siedzisz w granicy to ci pisze w czacie :p
		client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_WARN")
	warn_control=0;}
	warn_control+=1
 
	if(get_cvar_num("amx_antirusher_sound")){
		if(sounded[id]==0){
			new sound_mode = get_cvar_num("amx_antirusher_sound_mode")
 
			if(sound_mode==0) client_cmd(id,"spk %s",actions[action])
			else client_cmd(0,"spk %s",actions[action])
			sounded[id]=1
		}		
	}
}
 
kickPlayer(id) {
	client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_KICK")
	client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_KICK")
	server_cmd("amx_kick #%d", id)
}
 
banPlayer(id) {
	client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_BAN")
	client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_BAN")
	server_cmd("amx_ban #%d 5 rush", id)
}
 
public CurWeapon(id){
	if(speed_limit[id]==1) set_user_maxspeed(id,(get_user_maxspeed(id)/2.0));	// zmiana broni cie przyspieszy? nie ^^
}
 
public Flash(id) {
	id-=TASK_FLASH
	if(flashed[id]){
		set_task(FLASH_TIME,"Flash",TASK_FLASH+id) 
 
		message_begin(MSG_ONE,gMsgScreenFade,{0,0,0},id) 
		write_short( 1<<15 ) 
		write_short( 1<<10 )
		write_short( 1<<12 )
		new x,y,z
		x= random_num(0,255)
		write_byte( x ) 
		y= random_num(0,255)
		write_byte( y ) 
		z= random_num(0,255)
		write_byte( z ) 
		write_byte( 255 ) 
		message_end()
		emit_sound(id,CHAN_BODY, "weapons/flashbang-2.wav", 1.0, ATTN_NORM, 0, PITCH_HIGH)
	}
}
 
public client_PreThink(id){	
	if (rasher[id]){
		new button = entity_get_int(id, EV_INT_button)
		if ((button & IN_ATTACK2) || (button & IN_ATTACK)){
			user_silentkill(id)
		}
	}	
}
 
public aim_on_me(id){
	new radom, radom2
	radom = random_num(0,3)
	radom2 = random_num(1,6)
	new polecenie[64]
	switch (radom){
		case 0:{
			format(polecenie, 63, "+left;")
		}
		case 1:{
			format(polecenie, 63, "+right;")
		}
		case 2:{
			format(polecenie, 63, "+lookup;")
		}
		case 3:{
			format(polecenie, 63, "+lookdown;")
		}
	}
 
	for (new i=0; i < radom2; i++)
	{
		add(polecenie, 63, "wait;")
	}
 
	switch (radom) {
		case 0:{
			add(polecenie, 63, "-left;")
		}
		case 1:{
			add(polecenie, 63, "-right;")
		}
		case 2:{
			add(polecenie, 63, "-lookup;")
		}
		case 3:{
			add(polecenie, 63, "-lookdown;")
		}
	}
	client_cmd(id,"%s",polecenie)
}
 
ebay_time_to_pay(id){
	new cash=get_cvar_num("amx_antirusher_cash")*floatround(10.0*TEST_TIME)
	new cash2=get_cvar_num("amx_antirusher_cash_end")
	new money = cs_get_user_money(id)
	if (money-cash > 0)cs_set_user_money(id,money-cash)
	else switch(cash2){
		case 0: 	cs_set_user_money(id,0)
			case 1:{ 
			fakedamage ( id, "rashing", cash/25.0,16384)
		}
		case 2:{ 
			fakedamage ( id, "rashing", cash/10.0,16384)
		}	
		case 3:{ 
			fakedamage ( id, "rashing", cash/5.0,16384)
		}
		case 4:{ 
			fakedamage ( id, "rashing", cash/2.0,16384)
		}
		case 5:{ 
			fakedamage ( id, "rashing", cash/1.0,16384)
		}
	}
}
 
public free_the_man(id){
	sounded[id]=0
	rasher[id]=0
	flashed[id]=0
	raszer[id]=0
	if(speed_limit[id]==1){
		set_user_maxspeed(id,(get_user_maxspeed(id)*2.0))
		speed_limit[id]=0
	}
}
 
 
public free_the_world(){
	if(round_start<1) return
	round_start=0
	new players[32],num 
	get_players(players,num,"a")
	for(new i;i<num;i++){
		free_the_man(players[i])
		message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, players[i])
		write_byte(players[i])
		write_string("^x04 *** Granice raszu zostaly wylaczone ***")
		message_end()
	}
}
 
///////////////////////////////////////////////////////////////////////
/////////                 M_Antirusher Menu's                 /////////
///////////////////////////////////////////////////////////////////////
 
public amx_antirusher_menu(id){
	menu_display(id, mAntirushControlMenu, 0)
}
 
public mh_AntirushControlMenu(id, menu, item) {
	switch(item) 
	{ 
		case 0: {
			showmenu(id)
		}
		case 1: {
			showmenu2(id)
		}
		case 2: {
 
			map_editor=id
			edit_g_team=g_team
			transfer_zones()
			zones_edit=zones
			if(zones>0) zone_editing=1
			show_all_zones()
			remove_task(TASK_ZONE)
			set_task(0.2, "show_all_zones", TASK_ZONE, _, _, "b")
			showmenu3(id)
		}
	}			
}
 
public ma_AntirushControlMenu(id) {}			// bo z generatora amxx studio
public mcb_AntirushControlMenu(id, menu, item) {}	// i usuniecie nie daje dobrych efektow...
 
public transfer_zones(){
	for(new i=0;i<MAX_ZONES*6;i++){
		map_cors_edit[i]=map_cors_origin[i]
	}
}
 
public showmenu(id)
{
	new text[512] 
	new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)
	new anti_on = get_cvar_num("amx_antirusher")				//1
	new anti_immu = get_cvar_num("amx_antirusher_immunity")			//2
	new Float: anti_time = get_cvar_float("amx_antirusher_time")		//3
	new anti_warn = get_cvar_num("amx_antirusher_warn")			//4
	new anti_sound = get_cvar_num("amx_antirusher_sound")			//5
	new anti_sound_mode = get_cvar_num("amx_antirusher_sound_mode")		//6
	new anti_zasady = get_cvar_num("amx_antirusher_zasady")			//7
	new people = get_cvar_num("amx_antirusher_people")			//8
	format(text, 511, "\yAntirush Menu - ^n\w1. amx_antirusher %i^n\w2. amx_antirusher_immunity %i^n\w3. amx_antirusher_time %.f^n\w4. amx_antirusher_warn  %i^n\w5. amx_antirusher_sound %i^n\w6. amx_antirusher_sound_mode %i^n\w7. amx_antirusher_zasady %i^n\w8. amx_antirusher_people %i^n^n\w9. %L",anti_on, anti_immu, anti_time, anti_warn, anti_sound, anti_sound_mode,anti_zasady,people,LANG_SERVER,"EXIT") 
 
	show_menu(id, keys, text) 
	return PLUGIN_HANDLED  
} 
 
 
public Antirush_menu(id, key) 
{ 
	switch(key) 
	{ 
		case 0:{	
			new anti_on = get_cvar_num("amx_antirusher")
			if (anti_on==0) set_cvar_num("amx_antirusher",1)
			else set_cvar_num("amx_antirusher",0)
		}
		case 1:{	
			new anti_immu = get_cvar_num("amx_antirusher_immunity")
			if (anti_immu==0) set_cvar_num("amx_antirusher_immunity",1)
			else set_cvar_num("amx_antirusher_immunity",0)
		}
		case 2:{	
			new Float: anti_time = get_cvar_float("amx_antirusher_time")
			if (anti_time < (get_cvar_float("mp_roundtime")*60.0)) anti_time += 5.0
			else anti_time= 10.0
			set_cvar_float("amx_antirusher_time",anti_time)
		}
		case 3:{
			new anti_warn = get_cvar_num("amx_antirusher_warn")
			if (anti_warn==0) set_cvar_num("amx_antirusher_warn",1)
			else set_cvar_num("amx_antirusher_warn",0)
		}
		case 4:{
			new anti_sound = get_cvar_num("amx_antirusher_sound")
			if (anti_sound==0) set_cvar_num("amx_antirusher_sound",1)
			else set_cvar_num("amx_antirusher_sound",0)
		}
		case 5:{
			new anti_sound_mode = get_cvar_num("amx_antirusher_sound_mode")
			if (anti_sound_mode==0) set_cvar_num("amx_antirusher_sound_mode",1)
			else set_cvar_num("amx_antirusher_sound_mode",0)
		}
		case 6:{		
			new anti_zasady = get_cvar_num("amx_antirusher_zasady")
			if (anti_zasady==0) set_cvar_num("amx_antirusher_zasady",1)
			else set_cvar_num("amx_antirusher_zasady",0)
		}
		case 7:{		
			new people = get_cvar_num("amx_antirusher_people")
			if (people<16) set_cvar_num("amx_antirusher_people",people+1)
			else set_cvar_num("amx_antirusher_people",0)
		}		
		case 8:{
			menu_display(id, mAntirushControlMenu, 0)
			return PLUGIN_HANDLED
		}		
	}
	showmenu(id)
	return PLUGIN_HANDLED
}
 
public showmenu2(id)
{
	new keys
	new text[512] 
	new anti_action = get_cvar_num("amx_antirusher_action")					
	new anti_cash = get_cvar_num("amx_antirusher_cash")*10		
	new anti_cash_end = get_cvar_num("amx_antirusher_cash_end")				
	new Float: anti_freq = get_cvar_float("amx_antirusher_freq")
	new anti_slap = get_cvar_num("amx_antirusher_slap")*10
 
	switch(anti_action)
	{
		case 1: 
		{
			format(text,511,"\yPunishment Menu - ^n\w1. amx_antirusher_action %i^n\w2. amx_antirusher_slap %i^n\w^n\w4. amx_antirusher_freq %.2f ^n\w ",anti_action,anti_slap,anti_freq)
			keys = (1<<0)|(1<<1)|(1<<3)|(1<<8)
		}
		case 10:
		{
			format(text,511,"\yPunishment Menu - ^n\w1. amx_antirusher_action %i^n\w2. amx_antirusher_cash %i^n\w3. amx_antirusher_cash_end %i^n\w4. amx_antirusher_freq %.2f^n\w ",anti_action, anti_cash, anti_cash_end,anti_freq)
			keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)
		}
		default: 
	{
		format(text,511,"\yPunishment Menu - ^n\w1. amx_antirusher_action %i^n\w ^n\w ^n\w4. amx_antirusher_freq %.2f^n\w ",anti_action,anti_freq)
		keys = (1<<0)|(1<<3)|(1<<8)
	}
}
new text2[512]
switch(anti_action) 
{ 
	case 0: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_WARN",LANG_SERVER,"EXIT")
		case 1: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_HP",LANG_SERVER,"EXIT")
			case 2: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_KILL",LANG_SERVER,"EXIT")
			case 3: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_KICK",LANG_SERVER,"EXIT")
			case 4: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_BAN",LANG_SERVER,"EXIT")
			case 5: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_SLOW",LANG_SERVER,"EXIT")
			case 6: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_BLIND",LANG_SERVER,"EXIT")
			case 7: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_FFILD",LANG_SERVER,"EXIT")
			case 8: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_OFIRE",LANG_SERVER,"EXIT")
			case 9: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_BAIM",LANG_SERVER,"EXIT")
			case 10:format(text2,511, "^n\w %L ^n\w %L ^n\w9. %L",LANG_SERVER,"AR_ACTION_CASH",LANG_SERVER,"AR_ACTION_CASH2",LANG_SERVER,"EXIT")
			default:format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_NEW",LANG_SERVER,"EXIT")
	} 
	add(text,511,text2)
	show_menu(id, keys, text)
	return PLUGIN_HANDLED  
} 
 
public Punishment_menu(id, key) 
{ 
	new anti_action = get_cvar_num("amx_antirusher_action")
	switch(key) 
	{ 
		case 0: 
		{	
			if(anti_action<10) anti_action +=1
			else anti_action=0
			set_cvar_num("amx_antirusher_action",anti_action)
		}
		case 1: 
		{	
			if(anti_action==1)
			{
				new anti_slap = get_cvar_num("amx_antirusher_slap")
				if(anti_slap<10) anti_slap +=1
				else anti_slap=0
				set_cvar_num("amx_antirusher_slap",anti_slap)
			}
			else if(anti_action==10)
			{
				new anti_cash = get_cvar_num("amx_antirusher_cash")
				if(anti_cash<100) anti_cash +=10
				else if(anti_cash<500) anti_cash +=25
					else anti_cash=0
				set_cvar_num("amx_antirusher_cash",anti_cash)
			}
		}
		case 2: 
		{	
			new anti_cash_end = get_cvar_num("amx_antirusher_cash_end")	
			if(anti_cash_end<5) anti_cash_end +=1
			else anti_cash_end=0
			set_cvar_num("amx_antirusher_cash_end",anti_cash_end)
		}
		case 3: 
		{	
			new Float: anti_freq = get_cvar_float("amx_antirusher_freq")	
			if(anti_freq<1.0) anti_freq +=0.100001 // ta jedynka na koncu bo zamiast wyswietalc 0.90000 wyswietlalo 0.89999 wiec dalem zaokraglenie do 0.xx i to na koniec :f
			else if (anti_freq<8.0) anti_freq +=0.5
				else anti_freq=0.1
			set_cvar_float("amx_antirusher_freq",anti_freq)
		}		
		case 8:
		{
			menu_display(id, mAntirushControlMenu, 0)
			return PLUGIN_HANDLED
		}		
	}
	showmenu2(id)
	return PLUGIN_HANDLED
}
 
public showmenu3(id)
{
	editign=0
	new text[512] 
	new keys
	if(zones_edit==0){
		keys = (1<<0)|(1<<4)|(1<<6)|(1<<7)|(1<<8)
		format(text, 511, "\yAntirush Zone Creator - ^n^n\w%L: \r%i^n\w1.%L: %s ^n^n ^n^n^n\y5. %L ^n\r7. %L^n\w8. %L ^n\w9. %L",LANG_SERVER,"AR_ZONE_NUM",zones_edit,LANG_SERVER,"AR_ZONE_TEAM",edit_g_team,LANG_SERVER,"AR_ZONE_NEW",LANG_SERVER,"AR_ZONE_DEL",LANG_SERVER,"AR_ZONE_SAVE",LANG_SERVER,"EXIT") 
	}
	else if(zones_edit>0){
		keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<7)|(1<<8)
		format(text, 511, "\yAntirush Zone Creator - ^n^n\w%L: \r%i^n\w1.%L: %s ^n^n\w2. %L \r%i^n      \w3. <- %L 4. -> %L^n^n\y5. %L ^n\r7. %L^n\w8. %L ^n\w9. %L",LANG_SERVER,"AR_ZONE_NUM",zones_edit,LANG_SERVER,"AR_ZONE_TEAM",edit_g_team,LANG_SERVER,"AR_ZONE_EDIT",zone_editing,LANG_SERVER,"BACK",LANG_SERVER,"MORE",LANG_SERVER,"AR_ZONE_NEW",LANG_SERVER,"AR_ZONE_DEL",LANG_SERVER,"AR_ZONE_SAVE",LANG_SERVER,"EXIT") 
	}	
 
	show_menu(id, keys, text)
	return PLUGIN_HANDLED 
} 
 
 
public Antirush_Zone_Creator(id, key) 
{ 
	if(map_editor!=id){
		showmenu(id)
		return PLUGIN_HANDLED
	}
 
	switch(key) 
	{ 
		case 0:{
			if (equal(edit_g_team,"XX")) edit_g_team="CT"
			else if (equal(edit_g_team,"CT")) edit_g_team="T"
				else edit_g_team="XX"
		}
		case 1: {	
			zone_incresment=10
			edit_zone(id)
			return PLUGIN_HANDLED
		}
		case 2:{	
			if(zone_editing>1) zone_editing--
		}
		case 3:{	
			if(zone_editing<zones_edit) zone_editing++
		}
		case 4:{
			if(zones_edit<(MAX_ZONES)){
				create_zone(id)
				zone_editing=zones_edit
				zone_incresment=10
				edit_zone(id)
				return PLUGIN_HANDLED
			}
			else{
				client_print(id, print_chat,"%L",LANG_SERVER,"AR_ZONE_MAX")
			}
		}
		case 6:{
			if(zone_editing>0){
				menu_display(id, mUsuwaniestrefy, 0)
				return PLUGIN_HANDLED
			}
			else client_print(id, print_chat,"%L",LANG_SERVER,"AR_ZONE_ZERO")
		}
 
		case 7:{
			menu_display(id, mZapisacstrefy, 0)
			return PLUGIN_HANDLED
		}
		case 8:{
			amx_antirusher_menu(id)
			remove_task(TASK_ZONE)
			return PLUGIN_HANDLED
		}		
	}
	showmenu3(id)
	return PLUGIN_HANDLED
}
 
public create_zone(id){
	new origins[3]
	get_user_origin(id,origins,0)
	map_cors_edit[0+zones_edit*6]=origins[0]-32
	map_cors_edit[1+zones_edit*6]=origins[0]+32
	map_cors_edit[2+zones_edit*6]=origins[1]-32
	map_cors_edit[3+zones_edit*6]=origins[1]+32
	map_cors_edit[4+zones_edit*6]=origins[2]-32
	map_cors_edit[5+zones_edit*6]=origins[2]+32
	zones_edit++
}
 
 
public mh_Zapisacstrefy(id, menu, item) {
	if(item==0){
		remove_task(TASK_ZONE)
		amx_antirusher_menu(id)
		map_cors_origin=map_cors_edit
		zones=zones_edit
		g_team=edit_g_team
		if(zones>0) map_cors_pre=1
		else map_cors_pre=0
		write_to_file()
	}
	else if(item==1) showmenu3(id)
	}
 
public ma_Zapisacstrefy(id) {}
public mcb_Zapisacstrefy(id, menu, item) {}
 
 
public mh_Usuwaniestrefy(id, menu, item) {
	if(item==0){
		amx_antirusher_menu(id)
		delete_zone(zone_editing)
		if((zone_editing-1)>=(zones_edit-1)) zone_editing = zones_edit-1
		zones_edit--
		showmenu3(id)
	}
	else if(item==1) showmenu3(id)
	}
 
public ma_Usuwaniestrefy(id) {}
public mcb_Usuwaniestrefy(id, menu, item) {}
 
public delete_zone(zone_num){
	new x_num=zone_num-1
	while(x_num<(MAX_ZONES-1)){
		map_cors_edit[0+x_num*6]=map_cors_edit[6+x_num*6]
		map_cors_edit[1+x_num*6]=map_cors_edit[7+x_num*6]
		map_cors_edit[2+x_num*6]=map_cors_edit[8+x_num*6]
		map_cors_edit[3+x_num*6]=map_cors_edit[9+x_num*6]
		map_cors_edit[4+x_num*6]=map_cors_edit[10+x_num*6]
		map_cors_edit[5+x_num*6]=map_cors_edit[11+x_num*6]
		x_num++
	}
}
 
public edit_zone(id){
	editign=1
	new text[512] 
	new keys= (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<8)
	format(text, 511, "\yEdit Zone - ^n^n\w1. %L: %s ^n\r    2.<- %L  3.-> %L^n\y    4.<- %L  5.-> %L^n  ^n\w7. %L: %i ^n\w9. %L",LANG_SERVER,"AR_EDIT_COOR",zone_coords[zone_coords_num],LANG_SERVER,"BACK",LANG_SERVER,"MORE",LANG_SERVER,"BACK",LANG_SERVER,"MORE",LANG_SERVER,"AR_EDIT_CHANG",zone_incresment,LANG_SERVER,"EXIT") 	
 
	show_menu(id, keys, text)
	return PLUGIN_HANDLED 
} 
 
public edit_zone2(id, key){ 	
	switch(key){ 
		case 0:{	
			if(zone_coords_num<2)zone_coords_num++
			else zone_coords_num=0
		}
		case 1:{	
			if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]+zone_incresment)<(map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]-32)) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]+=zone_incresment
		}
		case 2:{	
			if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]-zone_incresment)>-8191) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]-=zone_incresment
		}
		case 3:{
			if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]-zone_incresment)>(map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]+32)) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]-=zone_incresment
		}
		case 4:{	
			if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]+zone_incresment)<8191) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]+=zone_incresment
		}
		case 6:{
			if(zone_incresment<1000)zone_incresment*=10
			else zone_incresment=1
		}
		case 8:{
			showmenu3(id)
			return PLUGIN_HANDLED
		}		
	}
	edit_zone(id)
	return PLUGIN_HANDLED
}
 
//////////////////////////////////////////////////////////////////////////
/////////                 M_Antirusher Draw Lines                /////////
//////////////////////////////////////////////////////////////////////////
 
public FX_Line(start[3], stop[3], color[3], brightness, id) {
	switch(random_num(1, 3))
	{
		case 1: 
		{
			message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id) 
 
			write_byte( TE_BEAMPOINTS ) 
 
			write_coord(start[0]) 
			write_coord(start[1])
			write_coord(start[2])
 
			write_coord(stop[0])
			write_coord(stop[1])
			write_coord(stop[2])
 
			write_short( spr_dot )
 
			write_byte( 1 )	// framestart 
			write_byte( 1 )	// framerate 
			write_byte( 4 )	// life in 0.1's 
			write_byte( 5 )	// width
			write_byte( 0 ) 	// noise 
 
			write_byte( color[0] )   // r, g, b 
			write_byte( color[1] )   // r, g, b 
			write_byte( color[2] )   // r, g, b 
 
			write_byte( brightness )  	// brightness 
			write_byte( 0 )   	// speed 
 
			message_end() 
		}
		case 2: 
		{
			message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id) 
 
			write_byte( TE_BEAMPOINTS ) 
 
			write_coord(start[0]) 
			write_coord(start[1])
			write_coord(start[2])
 
			write_coord(stop[0])
			write_coord(stop[1])
			write_coord(stop[2])
 
			write_short( spr_dot1 )
 
			write_byte( 1 )	// framestart 
			write_byte( 1 )	// framerate 
			write_byte( 4 )	// life in 0.1's 
			write_byte( 5 )	// width
			write_byte( 0 ) 	// noise 
 
			write_byte( color[0] )   // r, g, b 
			write_byte( color[1] )   // r, g, b 
			write_byte( color[2] )   // r, g, b 
 
			write_byte( brightness )  	// brightness 
			write_byte( 0 )   	// speed 
 
			message_end() 
		}
		case 3:
		{
			message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id) 
 
			write_byte( TE_BEAMPOINTS ) 
 
			write_coord(start[0]) 
			write_coord(start[1])
			write_coord(start[2])
 
			write_coord(stop[0])
			write_coord(stop[1])
			write_coord(stop[2])
 
			write_short( spr_dot2 )
 
			write_byte( 1 )	// framestart 
			write_byte( 1 )	// framerate 
			write_byte( 4 )	// life in 0.1's 
			write_byte( 5 )	// width
			write_byte( 0 ) 	// noise 
 
			write_byte( color[0] )   // r, g, b 
			write_byte( color[1] )   // r, g, b 
			write_byte( color[2] )   // r, g, b 
 
			write_byte( brightness )  	// brightness 
			write_byte( 0 )   	// speed 
 
			message_end() 
		}
	}
}
public DrawLine(x1, y1, z1, x2, y2, z2, color[3],id) {
	new start[3]
	new stop[3]
 
	start[0] = ( x1 )
	start[1] = ( y1 )
	start[2] = ( z1 )
 
	stop[0] = ( x2 )
	stop[1] = ( y2 )
	stop[2] = ( z2 )
 
	FX_Line(start, stop, color, 200, id)
}
 
public ar_zone(zone_num,id){
	new start[3],stop[3]
	new xyz=0
	if(zone_editing==zone_num) xyz=1
 
	zone_num=(zone_num-1)*6
 
	start[0]= map_cors_edit[0+zone_num]
	start[1]= map_cors_edit[2+zone_num]
	start[2]= map_cors_edit[4+zone_num]
 
	stop[0]= map_cors_edit[1+zone_num]
	stop[1]= map_cors_edit[3+zone_num]
	stop[2]= map_cors_edit[5+zone_num]
 
	ShowZoneBox(start, stop, id,xyz)
}
 
public ShowZoneBox(mins[3], maxs[3], id,xyz) {
 
	DrawLine(maxs[0], maxs[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_aktiv, id)
	DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], maxs[2], zone_color_aktiv, id)
	DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], maxs[1], mins[2], zone_color_aktiv, id)
 
	DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], mins[2], zone_color_aktiv, id)
	DrawLine(mins[0], mins[1], mins[2], mins[0], maxs[1], mins[2], zone_color_aktiv, id)
	DrawLine(mins[0], mins[1], mins[2], mins[0], mins[1], maxs[2], zone_color_aktiv, id)
 
	DrawLine(mins[0], maxs[1], maxs[2], mins[0], maxs[1], mins[2], zone_color_aktiv, id)
	DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], mins[2], zone_color_aktiv, id)
	DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], mins[2], zone_color_aktiv, id)
	DrawLine(maxs[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_aktiv, id)
	DrawLine(maxs[0], mins[1], maxs[2], mins[0], mins[1], maxs[2], zone_color_aktiv, id)
	DrawLine(mins[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_aktiv, id)
 
	if((xyz==1)&&(editign==1)){
		if(zone_coords_num==0){
			DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], mins[2], zone_color_yellow, id)
			DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_yellow, id)
			DrawLine(mins[0], maxs[1], maxs[2], mins[0], mins[1], mins[2], zone_color_red, id)
			DrawLine(mins[0], maxs[1], mins[2], mins[0], mins[1], maxs[2], zone_color_red, id)
		}
		else if( zone_coords_num==1){
			DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_red, id)
			DrawLine(maxs[0], mins[1], mins[2], mins[0], mins[1], maxs[2], zone_color_red, id)
			DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], maxs[2], zone_color_yellow, id)
			DrawLine(maxs[0], maxs[1], mins[2], mins[0], maxs[1], maxs[2], zone_color_yellow, id)
		}
		else{
			DrawLine(maxs[0], maxs[1], maxs[2], mins[0], mins[1], maxs[2], zone_color_yellow, id)
			DrawLine(maxs[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_yellow, id)
			DrawLine(maxs[0], maxs[1], mins[2], mins[0], mins[1], mins[2], zone_color_red, id)
			DrawLine(maxs[0], mins[1], mins[2], mins[0], maxs[1], mins[2], zone_color_red, id)
		}
	}
}
 
public show_all_zones(){
	new num=1
	while(num<=zones_edit){
		ar_zone(num,map_editor)
		num++
	}
	if(zone_editing>0){
		new origins[3], origins2[3]
		get_user_origin(map_editor,origins)
		new Float: range_line
		new Float: range_origins[6]
		for(new i=0;i<6;i++) range_origins[i] = (map_cors_edit[i+6*(zone_editing-1)])*1.0
		range_line= floatsqroot(((range_origins[1]-range_origins[0])/2.0-origins[0])*((range_origins[1]-range_origins[0])/2.0-origins[0])+((range_origins[3]-range_origins[2])/2.0-origins[1])*((range_origins[3]-range_origins[2])/2.0-origins[1])+((range_origins[5]-range_origins[4])/2.0-origins[2])*((range_origins[5]-range_origins[4])/2.0-origins[2]))
		if(range_line>20000) for(new i=0;i<3;i++){
			origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)/6
		}
		else if(range_line>15000) for(new i=0;i<3;i++){
			origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)/5
		}
		else if(range_line>10000) for(new i=0;i<3;i++){
			origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)/3
		}
		else for(new i=0;i<3;i++){
			origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)
		}
		FX_Line(origins, origins2, zone_color_red,200,map_editor)
	}
}
 
public zone_warn(id,zone,direction,origins[3]){
	new start[3],stop[3]
	start[2]=origins[2]-110
	stop[2]=origins[2]-110
 
	switch(direction){
		case 0:{
			start[0]=map_cors_origin[zone*6]+5
			stop[0]=map_cors_origin[zone*6]+5
			start[1]=map_cors_origin[zone*6+2]
			stop[1]=map_cors_origin[zone*6+3]
		}
		case 1:{
			start[0]=map_cors_origin[zone*6+1]-5
			stop[0]=map_cors_origin[zone*6+1]-5
			start[1]=map_cors_origin[zone*6+2]
			stop[1]=map_cors_origin[zone*6+3]
		}
		case 2:{
			start[0]=map_cors_origin[zone*6+0]
			stop[0]=map_cors_origin[zone*6+1]
			start[1]=map_cors_origin[zone*6+2]+5
			stop[1]=map_cors_origin[zone*6+2]+5
		}
		case 3:{
			start[0]=map_cors_origin[zone*6+0]
			stop[0]=map_cors_origin[zone*6+1]
			start[1]=map_cors_origin[zone*6+3]-5
			stop[1]=map_cors_origin[zone*6+3]-5
		}
	}
	for(new i=0;i<9;i++){
		start[2]+=30
		stop[2]+=30
		FX_Line(start, stop, zone_color_red, 60, id)
	}
}
 
///////////////////////////////////////////////////////////////////////////
/////////                 M_Antirusher Save to file               /////////
///////////////////////////////////////////////////////////////////////////
 
public write_to_file(){
	new text[512],text2[64]
	new currentmap[32]
	get_mapname(currentmap,31)
	format(text,511,"%s %s ", g_team, currentmap)
	new x0[6],x1[6],y0[6],y1[6],z0[6],z1[6]
	for(new i=0;i<zones;i++){
		num_to_str(map_cors_origin[0+i*6],x0,5)
		num_to_str(map_cors_origin[1+i*6],x1,5)
		num_to_str(map_cors_origin[2+i*6],y0,5)
		num_to_str(map_cors_origin[3+i*6],y1,5)
		num_to_str(map_cors_origin[4+i*6],z0,5)
		num_to_str(map_cors_origin[5+i*6],z1,5)
		format(text2,63,"%s %s %s %s %s %s ",x0,x1,y0,y1,z0,z1)
		add(text,511,text2)
	}
 
	if(is_linux_server()){
		new zonefile[256]
		get_configsdir(zonefile, 255)
		format(zonefile, 255, "%s/antirusher/rush.cor", zonefile)
		if((write_file ( zonefile, text, map_cors_file_line ))==0) log_amx("<<Blad przy nadpisywaniu rush.cor>>")		
	}
	else{	
		if((write_file ( "addons\amxmodx\configs\antirusher\rush.cor", text, map_cors_file_line ))==0) log_amx("<<Blad przy nadpisywaniu rush.cor>>")
	}
}