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 13266313208212 dodana przez Drzanas, 15.01.2012 13:42
Typ:


Drzanas
13266313208212
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.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <sqlx>
 
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0"
#define AUTHOR "QTM_Peyote & cypis"
 
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_WSKRZES 704
#define ZADANIE_WYSZKOLENIE_SANITARNE 736
#define ZADANIE_POKAZ_REKLAME 768
#define ZADANIE_USTAW_SZYBKOSC 832
 
new SyncHudObj;
new SyncHudObj2;
 
new sprite_white;
new sprite_blast;
 
new cvar_doswiadczenie_za_zabojstwo,
cvar_doswiadczenie_za_wygrana,
cvar_limit_poziomu,
 
new nazwa_gracza[33][64];
new klasa_gracza[33];
new poziom_gracza[33] = 1;
new doswiadczenie_gracza[33];
 
new nowa_klasa_gracza[33];
 
 
 
enum {NONE = 0, Snajper, Komandos, Strzelec, Obronca, Medyk, Wsparcie, Saper, Demolitions, Rusher, Admiral};
new const nazwy_klas[][] = {"Brak",
	"Snajper",
	"Komandos",
	"Strzelec wyborowy",
	"Obronca",
	"Medyk",
	"Wsparcie ogniowe",
	"Saper",
	"Demolitions",
	"Rusher",
	"Admiral (Klasa Premium)"
};
 
new const opisy_klas[][] = {"Brak",
	"Dostaje AWP, scout i deagle, 120hp bazowe, 1/3 szansy natychmiastowego zabicia noza, 110% biegu, 100 pancerza",
	"Dostaje Deagle, 140hp bazowe, Natychmiastowe zabicie z noza (prawy przycisk myszy), 135% biegu, 100 pancerza",
	"Dostaje AK i M4A1, 110hp bazowe, 80 % biegu, 100 pancerza",
	"Dostaje M249 (Krowa), 120hp bazowe, 80% biegu, jest odporny na miny, ma wszystkie granaty, 150 pancerza",
	"Dostaje UMP45, 110hp bazowe, posiada apteczke, 100 pancerza",
	"Dostaje MP5, 100 hp bazowe, Ma dwie rakiety,ktore po trafieniu przeciwnika zadaja dużo obrazen",
	"Dostaje P90, 100hp bazowe, 100 pancerza, Dostaje 3 miny, gdy ktos w nie wejdzie wybuchaja",
	"Dostaje AUG, 110 hp bazowe, 100 pancerza, Ma wszystkie granaty, Dostaje dynamit, który zabiera sporo zycia wszystkim znajdującym się blisko niego",
	"Dostaje szotgana M3, 100 hp bazowe, 130% biegu",
	"Dostaje Famasa, 130 hp bazowe, 120% biegu, za kazde zabojstwo +20 hp oraz pelen magazynek, podwojny skok"
};
 
 
 
new lvl_klasy_gracza[33][sizeof nazwy_klas];
new xp_klasy_gracza[33][sizeof nazwy_klas];
 
 
new polaczony_raz[33], wczytane_dane[33];
new Handle:info;
 
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
 
 
 
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
 
	RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
 
	register_forward(FM_CmdStart, "CmdStart");
	register_forward(FM_EmitSound, "EmitSound");
 
	register_event("SendAudio", "WygranaTerro" , "a", "2&%!MRAD_terwin");
	register_event("SendAudio", "WygranaCT", "a", "2&%!MRAD_ctwin");
 
	cvar_doswiadczenie_za_zabojstwo = register_cvar("cod_killxp", "10");
	cvar_doswiadczenie_za_wygrana = register_cvar("cod_winxp", "40");
	cvar_limit_poziomu = register_cvar("cod_maxlevel", "201"); 
 
	register_cvar("cod_host", "");
	register_cvar("cod_user", "");
	register_cvar("cod_pass", "");
	register_cvar("cod_db", "");
	register_cvar("cod_table", "codmod_table");
 
	register_clcmd("say /klasa", "WybierzKlase");
	register_clcmd("say /class", "WybierzKlase");
	register_clcmd("say /klasy", "OpisKlasy");
	register_clcmd("say /classinfo", "OpisKlasy");
	register_clcmd("say /item", "Pomoc");
 
	register_concmd("cod_setlvl", "cmd_setlvl", ADMIN_RCON, "<name> <level>");
 
	SyncHudObj = CreateHudSyncObj();
	SyncHudObj2 = CreateHudSyncObj();
}
 
public plugin_cfg() 
{	
	new Host[64], User[64], Pass[64], DB[64], Table[32];
 
	get_cvar_string("cod_host", Host, 63);
	get_cvar_string("cod_user", User, 63);
	get_cvar_string("cod_pass", Pass, 63);
	get_cvar_string("cod_db", DB, 63);
	get_cvar_string("cod_table", Table, 31);
 
	info = SQL_MakeDbTuple(Host, User, Pass, DB);
	if(info == Empty_Handle){
		set_fail_state("Brak polaczenia z baza danych!");
		return;
	}
 
	new szTemp[1028], iLen = 0
	iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "CREATE TABLE IF NOT EXISTS `%s` (`nick` VARCHAR(64)", Table);
 
	for(new i=1; i<sizeof nazwy_klas; i++)
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i` VARCHAR(32)", i);
 
	iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")");
 
	SQL_ThreadQuery(info, "IgnoreHandle", szTemp);
}
 
public plugin_precache()
{
	//sprite_white = precache_model("sprites/white.spr") ;
	//sprite_blast = precache_model("sprites/dexplo.spr");
 
	//	precache_sound("QTM_CodMod/select.wav");
	//	precache_sound("QTM_CodMod/start.wav");
	//	precache_sound("QTM_CodMod/start2.wav");
	//	precache_sound("QTM_CodMod/levelup.wav");
 
}
 
public Odrodzenie(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_CONTINUE;
 
	if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE))
		set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b");
 
	if(nowa_klasa_gracza[id])
	{
		klasa_gracza[id] = nowa_klasa_gracza[id];
		nowa_klasa_gracza[id] = 0;
		strip_user_weapons(id);
		give_item(id, "weapon_knife");
		switch(get_user_team(id))
		{
			case 1: give_item(id, "weapon_glock18");
				case 2: give_item(id, "weapon_usp");
			}
		WczytajDane(id, klasa_gracza[id]);
	}
 
	if(!klasa_gracza[id])
	{
		WybierzKlase(id);
		return PLUGIN_CONTINUE;
	}
 
	switch(klasa_gracza[id])
	{
		case Snajper:
		{
			give_item(id, "weapon_awp");
			give_item(id, "weapon_scout");
			give_item(id, "weapon_deagle");
		}
		case Komandos:
		{
			give_item(id, "weapon_deagle");
		}
		case Strzelec:
		{
			give_item(id, "weapon_m4a1");
			give_item(id, "weapon_ak47");
		}
		case Obronca:
		{
			give_item(id, "weapon_m249");
			give_item(id, "weapon_hegrenade");
			give_item(id, "weapon_flashbang");				
			give_item(id, "weapon_smokegrenade");
		}
		case Medyk:
		{
			give_item(id, "weapon_ump45");
		}	
		case Wsparcie:
		{
			give_item(id, "weapon_mp5navy");
		}
		case Saper:
		{
			give_item(id, "weapon_p90");
		}
		case Demolitions:
		{
			give_item(id, "weapon_aug");
			give_item(id, "weapon_hegrenade");
			give_item(id, "weapon_flashbang");
			give_item(id, "weapon_smokegrenade");
		}
		case Rusher:
		{
			give_item(id, "weapon_m3");
		}
		case Admiral:
		{
			give_item(id, "weapon_famas");
		}
	}
 
 
	return PLUGIN_CONTINUE;
}
 
public ObrazeniaPost(id, idinflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_alive(attacker) || !is_user_connected(attacker) || !klasa_gracza[attacker])
		return PLUGIN_CONTINUE;
 
	if(get_user_team(id) != get_user_team(attacker))
	{
 
	}
	SprawdzPoziom(attacker);
	return PLUGIN_CONTINUE;
}
 
 
public SmiercGraczaPost(id, attacker, shouldgib)
{
	if(!is_user_alive(attacker) || !is_user_connected(attacker))
		return PLUGIN_CONTINUE;
 
 
 
	if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
	{
		new doswiadczenia_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		new nowe_doswiadczenie = 0;
 
		nowe_doswiadczenie += doswiadczenia_za_zabojstwo;
 
		if(klasa_gracza[id] == Admiral && klasa_gracza[attacker] != Admiral)
			//EXP		
 
		set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
		ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_doswiadczenie);
 
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
	SprawdzPoziom(attacker);
 
 
	return PLUGIN_CONTINUE;
}
 
public client_connect(id)
{
 
 
	klasa_gracza[id] = 0;
	poziom_gracza[id] = 1;
	doswiadczenie_gracza[id] = 0;
 
	wczytane_dane[id] = 0;
	polaczony_raz[id] = 0;
 
	for(new i=1 ;i<sizeof nazwy_klas; i++)
	{
		lvl_klasy_gracza[id][i] = 0;
		xp_klasy_gracza[id][i] = 0;
 
	}
 
	get_user_name(id, nazwa_gracza[id], 63);
	replace_all(nazwa_gracza[id], 63, "'", "\'");
	replace_all(nazwa_gracza[id], 63, "`", "\`");
 
	UsunTask(id);
 
	set_task(10.0, "PokazReklame", id+ZADANIE_POKAZ_REKLAME);
}
 
public client_disconnect(id)
{
	UsunTask(id);
	ZapiszDane(id);
}
 
public UsunTask(id)
{
	remove_task(id+ZADANIE_POKAZ_INFORMACJE);
	remove_task(id+ZADANIE_POKAZ_REKLAME);	
	remove_task(id+ZADANIE_USTAW_SZYBKOSC);
	remove_task(id+ZADANIE_WSKRZES);
	remove_task(id+ZADANIE_WYSZKOLENIE_SANITARNE);
}
 
public WygranaTerro()
	WygranaRunda("TERRORIST");
 
public WygranaCT()
	WygranaRunda("CT");
 
public WygranaRunda(const Team[])
{
	//przypierdol exp adla TAZA
	new Players[32], playerCount, id;
	get_players(Players, playerCount, "aeh", Team);
	new doswiadczenie_za_wygrana = get_pcvar_num(cvar_doswiadczenie_za_wygrana);
 
	if(get_playersnum() < 3)
		return;
 
	for (new i=0; i<playerCount; i++) 
	{
		id = Players[i];
		if(!klasa_gracza[id])
			continue;
 
		doswiadczenie_gracza[id] += doswiadczenie_za_wygrana;
		client_print(id, print_chat, "[COD:MW] Dostales %i doswiadczenia za wygrana runde.", doswiadczenie_za_wygrana);
		SprawdzPoziom(id);
	}
}
 
public OpisKlasy(id)
{
	new menu = menu_create("Wybierz klase:", "OpisKlasy_Handle");
	for(new i=1; i<sizeof nazwy_klas; i++)
		menu_additem(menu, nazwy_klas[i]);
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
}
 
public OpisKlasy_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	client_print(id, print_chat, "[COD:MW] %s: %s", nazwy_klas[item+1], opisy_klas[item+1]);
	menu_display(id, menu);
 
	return PLUGIN_CONTINUE;
}
 
public WybierzKlase(id)
{
	if(polaczony_raz[id])
	{
		client_print(id, print_center, "Poczekaj na klase, a nie spamujesz!");
		return PLUGIN_CONTINUE;
	}
	if(!wczytane_dane[id])
	{
 
		new szTemp[1024], data[1], Table[32];
		get_cvar_string("cod_table", Table, 31);
 
		data[0] = id;
 
		formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE `nick` = '%s'", Table, nazwa_gracza[id])
		SQL_ThreadQuery(info, "KlasaHandle", szTemp, data, sizeof data)
		polaczony_raz[id] = 1;
	}
	else
	{
		lvl_klasy_gracza[id][klasa_gracza[id]] = poziom_gracza[id];
		xp_klasy_gracza[id][klasa_gracza[id]] = doswiadczenie_gracza[id];
 
		new klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
		for(new i=1 ;i<sizeof nazwy_klas; i++)
		{
			format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
	}
	return PLUGIN_CONTINUE;
}
 
public KlasaHandle(failstate, Handle:query, error[], errnum, Data[], size){
	if(failstate != TQUERY_SUCCESS){
		log_amx("MySQL Select error: %s",error);
		return;
	}
	new id = Data[0]
	new szTemp[2028], klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
 
	if(SQL_NumRows(query))
	{
		new daneklasy[6][32];
		for(new i=1 ;i<sizeof nazwy_klas; i++)
		{
			formatex(szTemp, charsmax(szTemp), "%i", i);
			SQL_ReadResult(query, SQL_FieldNameToNum(query, szTemp), szTemp, charsmax(szTemp))
 
			replace_all(szTemp, charsmax(szTemp), "#", " ");
 
			parse(szTemp, daneklasy[0], 31, daneklasy[1], 31, daneklasy[2], 31, daneklasy[3], 31, daneklasy[4], 31, daneklasy[5], 31);
			lvl_klasy_gracza[id][i] = str_to_num(daneklasy[0])
			xp_klasy_gracza[id][i] = str_to_num(daneklasy[1])
 
 
			formatex(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
		wczytane_dane[id] = 1;
	} 
	else
	{
		new iLen = 0, Table[32];
		get_cvar_string("cod_table", Table, 31);
 
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "INSERT INTO `%s` (`nick`", Table);
 
		for(new i=1; i<sizeof nazwy_klas; i++)
			iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i`", i);
 
		iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ") VALUES (");
		iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "'%s'", nazwa_gracza[id]);
 
		for(new i=1; i<sizeof nazwy_klas; i++)
			iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ", '1#0#0#0#0#0'");
 
		iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")");
		SQL_ThreadQuery(info, "IgnoreHandle", szTemp)
 
		for(new i=1 ;i<sizeof nazwy_klas; i++)
		{
			formatex(klasa, 49, "%s \yPoziom: 1", nazwy_klas[i]);
			menu_additem(menu, klasa);
		}
		menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
		menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
		menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
		menu_display(id, menu);
 
		client_cmd(id, "spk QTM_CodMod/select");
	}
	polaczony_raz[id] = 0;
}
 
public WybierzKlase_Handle(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
 
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}	
 
	if(item == klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
 
	if(klasa_gracza[id])
	{
		nowa_klasa_gracza[id] = item;
		client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
	}
	else
	{
		klasa_gracza[id] = item;
		WczytajDane(id, klasa_gracza[id]);
		Odrodzenie(id);
	}
	return PLUGIN_CONTINUE;
}
 
 
public WczytajDane(id, klasa)
{
	poziom_gracza[id] = max(1, lvl_klasy_gracza[id][klasa]);
	doswiadczenie_gracza[id] = xp_klasy_gracza[id][klasa];
	return PLUGIN_CONTINUE;
}
 
public ZapiszDane(id)
{
	if(!klasa_gracza[id])
		return PLUGIN_CONTINUE;
 
	new szTemp[512], szTemp2[512], Table[32];
	get_cvar_string("cod_table", Table, 31);
 
	formatex(szTemp2, charsmax(szTemp2),"%i#%i#%i#%i#%i#%i", poziom_gracza[id], doswiadczenie_gracza[id]);
	formatex(szTemp, charsmax(szTemp), "UPDATE `%s` SET `%i` = '%s' WHERE `nick` = '%s'", Table, klasa_gracza[id], szTemp2, nazwa_gracza[id]);
	SQL_ThreadQuery(info, "IgnoreHandle",szTemp)
	return PLUGIN_CONTINUE;
}
 
public IgnoreHandle(FailState,Handle:query,Error[],Errcode,Data[],DataSize)
{
	if(FailState != TQUERY_SUCCESS){
		log_amx("MySQL save error: %s", Error);
		return;
	}
}
 
public plugin_end()
	SQL_FreeHandle(info)
 
public SprawdzPoziom(id)
{	
	new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
	if(poziom_gracza[id] < limit_poziomu)
	{
		while(doswiadczenie_gracza[id] >= doswiadczenie_poziomu(poziom_gracza[id]))
		{
			poziom_gracza[id]++;
			set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
			ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
			client_cmd(id, "spk QTM_CodMod/levelupmw");
		}
 
		while(doswiadczenie_gracza[id] < doswiadczenie_poziomu(poziom_gracza[id]-1))
		{
			poziom_gracza[id]--;
			set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
			ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
		}
 
		if(poziom_gracza[id] > limit_poziomu)
		{
			poziom_gracza[id] = limit_poziomu;
 
		}	
		ZapiszDane(id);
	}
	if(poziom_gracza[id] > limit_poziomu)
	{
		poziom_gracza[id] = limit_poziomu;
		ZapiszDane(id);
	}	
}
 
public PokazInformacje(id) 
{
	id -= ZADANIE_POKAZ_INFORMACJE;
 
	if(!is_user_alive(id) && is_user_connected(id))
	{
		new target = entity_get_int(id, EV_INT_iuser2);
 
		if(!target)
			return PLUGIN_CONTINUE;
 
		set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
		ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %i / %i^nPoziom : %i^nPerk : %s", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], doswiadczenie_poziomu(poziom_gracza[target]), poziom_gracza[target]);
 
		return PLUGIN_CONTINUE;
	}
	set_hudmessage(255, 0, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
	ShowSyncHudMsg(id, SyncHudObj, "[Klasa : %s]^n[Doswiadczenie : %i / %i]^n[Poziom : %i]^n[Perk : %s]", nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], doswiadczenie_poziomu(poziom_gracza[id]), poziom_gracza[id]);
	return PLUGIN_CONTINUE;
}  
 
public PokazReklame(id)
{
	id-=ZADANIE_POKAZ_REKLAME;
	client_print(id, print_chat, "[COD:MW] Witaj w Modyfikacji Call of Duty stworzonej przez QTM_Peyote, a edytowanej przez Cypis");
	client_print(id, print_chat, "[COD:MW] W celu uzyskania informacji o komendach napisz /pomoc.");
}
 
public Pomoc(id)
	show_menu(id, 1023, "\y/reset\w - resetuje statystyki^n\y/statystyki\w - wyswietla statystyki^n\y/klasa\w - uruchamia menu wyboru klas^n\y/wyrzuc\w - wyrzuca perk^n\y/perk\w - pokazuje opis twojego perku^n\y/klasy\w - pokazuje opisy klas^n\y+use\w - Uzycie umiejetnosci klasy^n\yradio3\w (standardowo C) lub  \yuseperk\w - Uzycie perku^n \wZapraszamy na \y GamesBoard.pl", -1, "Pomoc");
 
public cmd_setlvl(id, level, cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	new arg[2][33];
	read_argv(1, arg[0], 32);
	read_argv(2, arg[1], 32);
	new player = cmd_target(id, arg[0], 8);
	new value = str_to_num(arg[1]);
 
	doswiadczenie_gracza[player] = doswiadczenie_poziomu(value);
	poziom_gracza[player] = 0;
	SprawdzPoziom(player);
	return PLUGIN_HANDLED;
}
 
 
 
stock bool:UTIL_In_FOV(id,target)
{
	if (Find_Angle(id,target,9999.9) > 0.0)
		return true;
 
	return false;
}
 
stock Float:Find_Angle(Core,Target,Float:dist)
{
	new Float:vec2LOS[2];
	new Float:flDot;
	new Float:CoreOrigin[3];
	new Float:TargetOrigin[3];
	new Float:CoreAngles[3];
 
	pev(Core,pev_origin,CoreOrigin);
	pev(Target,pev_origin,TargetOrigin);
 
	if (get_distance_f(CoreOrigin,TargetOrigin) > dist)
		return 0.0;
 
	pev(Core,pev_angles, CoreAngles);
 
	for ( new i = 0; i < 2; i++ )
		vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i];
 
	new Float:veclength = Vec2DLength(vec2LOS);
 
	//Normalize V2LOS
	if (veclength <= 0.0)
	{
		vec2LOS[0] = 0.0;
		vec2LOS[1] = 0.0;
	}
	else
	{
		new Float:flLen = 1.0 / veclength;
		vec2LOS[0] = vec2LOS[0]*flLen;
		vec2LOS[1] = vec2LOS[1]*flLen;
	}
 
	//Do a makevector to make v_forward right
	engfunc(EngFunc_MakeVectors,CoreAngles);
 
	new Float:v_forward[3];
	new Float:v_forward2D[2];
	get_global_vector(GL_v_forward, v_forward);
 
	v_forward2D[0] = v_forward[0];
	v_forward2D[1] = v_forward[1];
 
	flDot = vec2LOS[0]*v_forward2D[0]+vec2LOS[1]*v_forward2D[1];
 
	if ( flDot > 0.5 )
	{
		return flDot;
	}
 
	return 0.0;
}
 
stock Float:Vec2DLength( Float:Vec[2] )  
{ 
	return floatsqroot(Vec[0]*Vec[0] + Vec[1]*Vec[1] );
}
 
stock set_user_clip(id, ammo)
{
	new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);
	get_weaponname(weapon, weaponname, 31);
	while ((weaponid = find_ent_by_class(weaponid, weaponname)) != 0)
		if(entity_get_edict(weaponid, EV_ENT_owner) == id) 
	{
		set_pdata_int(weaponid, 51, ammo, 4);
		return weaponid;
	}
	return 0;
}