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 13034852630 dodana przez Gość, 22.04.2011 16:14
Typ:


13034852630
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.
/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
 
#define PLUGIN "Bomba atomowa z licznikiem czasu i muzyka"
#define VERSION "1.0"
#define AUTHOR "SaS#PL"
#define TID 4738
 
#define TUTORIAL 1001
#define TASK_TUT 1111
 
#define MSOUND "items/nvg_off.wav" /* dźwięk który będzie odtwarzany gdy tutor się ukarze */
 
/*************EDIT THIS***************/
#define W_C4 "models/w_c4.mdl"
#define V_C4 "models/v_c4.mdl"
//#define P_C4 "models//p_c4.mdl"
#define ALARM_LEN 2.83
/*************EDIT END***************/
 
enum { RED = 1, BLUE, YELLOW, GREEN } /* 4 typy o których wspominałem */
 
new const g_TutorPrecache[][] = { "gfx/career/icon_!.tga", "gfx/career/icon_!-bigger.tga", "gfx/career/icon_i.tga", "gfx/career/icon_i-bigger.tga", "gfx/career/icon_skulls.tga", "gfx/career/round_corner_ne.tga", "gfx/career/round_corner_nw.tga", "gfx/career/round_corner_se.tga", "gfx/career/round_corner_sw.tga", "resource/TutorScheme.res", "resource/UI/TutorTextWindow.res" }
/* Pliki które są potrzebne aby tutor wyglądał jak w czero */
 
new g_msg_geiger
new g_msg_statusicon
 
new g_ent_bp
new bool:g_ent_c4
new g_ent_owner
 
new pc_backpack_glow, pc_c4_glow, pc_geiger
new pc_geiger_icon, pc_nuke_c4_nosound, pc_nuke_c4_noled
 
new pr_ledglow
 
new bool:g_inrange[32]
 
new g_MsgTutor
new g_MsgTutClose
 
new g_c4timer, pointnum;
new bool:b_planted = false;
 
new pc;
new t;
 
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
 
	g_MsgTutor = get_user_msgid("TutorText")
	g_MsgTutClose = get_user_msgid("TutorClose")
 
	pointnum = get_cvar_pointer("mp_c4timer")
 
	register_logevent("newRound", 2, "1=Round_Start");
	register_logevent("endRound", 2, "1=Round_End");
	register_logevent("endRound", 2, "1&Restart_Round_");
 
	pc_backpack_glow = register_cvar("nuke_backpack_glow", "1")
	pc_c4_glow = register_cvar("nuke_c4_glow", "1")
	pc_geiger = register_cvar("nuke_geiger", "1")
	pc_geiger_icon = register_cvar("nuke_geiger_icon", "1")
	pc_nuke_c4_nosound = register_cvar("nuke_c4_nosound", "1")
	pc_nuke_c4_noled = register_cvar("nuke_c4_noled", "1")
 
	g_msg_geiger = get_user_msgid("Geiger")
	g_msg_statusicon = get_user_msgid("StatusIcon")
 
	//register_logevent("RoundStart", 2, "1=Round_Start")
	register_logevent("BombDroped", 3, "2=Dropped_The_Bomb")
	register_logevent("BombPlanted", 3, "2=Planted_The_Bomb")
	register_logevent("BombDefused", 3, "2=Defused_The_Bomb")
	register_logevent("BombExploded", 6, "3=Target_Bombed")
	register_logevent("BombSpawned", 3, "2=Spawned_With_The_Bomb")
	register_logevent("GotBomb", 3, "2=Got_The_Bomb")
	register_logevent("planted", 3, "2=Planted_The_Bomb");
	register_logevent("Koniec_Rundy", 2, "1=Round_End") 
 
	register_event("HLTV", "RoundStart", "a", "1=0", "2=0") 
	//register_event("WeapPickup", "GotBomb", "be", "1=15")
 
	register_message(g_msg_statusicon, "Check_Icon") 
	register_message(SVC_TEMPENTITY, "Block_Sprite") 
 
	#if defined W_BACKPACK || defined W_C4
	register_forward(FM_SetModel,"ModelChanged",1)
	register_forward(FM_EmitSound, "Block_Sound")
	#endif
 
	#if defined P_C4 || defined V_C4
	register_event("CurWeapon","WeaponChanged","be","1=1")
	#endif
 
	set_task(1.0, "check_geiger", _, _, _, "b")
	set_task(10.0, "check_bombsites")
 
	pc = get_cvar_pointer("mp_c4timer");
 
 
}
 
/* Tutaj znajdują się ustawienia aby tutor działał */
MakeTutor(id,Text[],Color,Float:Time = 0.0){
	if(is_user_connected( id ))
	{
		if(!id){
			message_begin(MSG_ALL,g_MsgTutor)
			write_string(Text)
			write_byte(0)
			write_short(0)
			write_short(0)
			write_short(1<<Color)
			message_end()
		}
		else
		{
 
			message_begin(MSG_ONE_UNRELIABLE,g_MsgTutor,_,id)
			write_string(Text)
			write_byte(0)
			write_short(0)
			write_short(0)
			write_short(1<<Color)
			message_end()
		}
	}
	if(Time != 0.0)
	{
 
		if( task_exists( id + TASK_TUT ) )
		{
			remove_task( id + TASK_TUT )
		}
		set_task(Time,"RemoveTutor",id + TASK_TUT)
	}
}
public RemoveTutor(taskID)
{
	new id = taskID - TASK_TUT
	if(!id){
		message_begin(MSG_ALL,g_MsgTutClose,_,id)
		message_end()
	}
	else
	{
		message_begin(MSG_ONE_UNRELIABLE,g_MsgTutClose,_,id)
		message_end()
	}
}
public newRound()
{
	g_c4timer = -1;
	remove_task(652450);
	b_planted = false;
}
 
public endRound()
{
	g_c4timer = -1;
	remove_task(652450);
}
 
public bomb_planted()
{
	b_planted = true;
	g_c4timer = get_pcvar_num(pointnum);
	dispTime()
	set_task(1.0, "dispTime", 652450, "", 0, "b");
}
 
public bomb_defused()
{
	if(b_planted)
	{
		remove_task(652450);
		b_planted = false;
	}
 
}
 
public bomb_explode()
{
	if(b_planted)
	{
		remove_task(999999);
		b_planted = false;
	}
 
}
 
public dispTime()
{
	if(!b_planted)
	{
		remove_task(652450);
		return;
	}
	if(g_c4timer >= 0)
	{
		new Text[100]
		formatex(Text,191,"Bomba wybuchnie za : %d ", g_c4timer)
		for(new i=1; i<=33; i++){
			if(is_user_connected(i)){
				if(g_c4timer>30){
					MakeTutor(i,Text,GREEN,1.0)
				}
				else if(g_c4timer>20){
					MakeTutor(i,Text,BLUE,1.0)
				}
				else if(g_c4timer>10){
					MakeTutor(i,Text,YELLOW,1.0)
				}
				else if(g_c4timer<=10){
					MakeTutor(i,Text,RED,1.0)
				}
			}
		}
		--g_c4timer;
	}
}
 
public client_connect(id)
{
	g_inrange[id] = false
}
public check_bombsites()
{
	if (!fm_find_ent_by_class(-1, "func_bomb_target") && !fm_find_ent_by_class(-1, "info_bomb_target"))
		pause("a")
	return PLUGIN_HANDLED
}
 
public RoundStart()
{
	g_ent_bp = 0
	g_ent_c4 = false
	g_ent_owner = 0
}
 
public BombDroped()
{
	set_task(0.1, "get_owner")
}
 
public get_owner()
{
	g_ent_owner = pev(g_ent_bp, pev_owner)
 
	if (get_pcvar_num(pc_backpack_glow))
	{
		set_pev(g_ent_owner, pev_renderfx, kRenderFxGlowShell)
		set_pev(g_ent_owner, pev_renderamt, 255.0)
		set_pev(g_ent_owner, pev_rendermode, kRenderTransAlpha)
		set_pev(g_ent_owner, pev_rendercolor, {0.0, 255.0, 0.0})
	}
}
 
public GotBomb()
{
	new LogMsg[64], username[32]
	read_logdata (LogMsg, 63)
	parse_loguser (LogMsg, username, 31)
	replace(username, 31, "^"", "")
	new id = get_user_index(username)
 
	if (!g_ent_bp)
	{
		new ent = -1, owner
 
		while ((ent = fm_find_ent_by_class(ent, "weapon_c4")))
		{
			owner = pev(ent, pev_owner)
			if (owner==id)
			{
				g_ent_bp = ent
				g_ent_owner = id
				break
			}
		}
	}
	g_ent_owner = id
}
 
public BombPlanted()
{
	new ent = -1
	while ((ent = fm_find_ent_by_class(ent, "grenade")) != 0)
	{
		if (pev(ent, pev_spawnflags))
		{
			if (get_pcvar_num(pc_c4_glow))
			{
				set_pev(ent, pev_renderfx, kRenderFxGlowShell)
				set_pev(ent, pev_renderamt, 255.0)
				set_pev(ent, pev_rendermode, kRenderTransAlpha)
				set_pev(ent, pev_rendercolor, {0.0, 255.0, 0.0})
			}
			g_ent_c4 = true
			g_ent_owner = ent
		}
	}
 
	#if defined ALARM && defined ALARM_LEN
	new Float:c4alarm = get_cvar_num("mp_c4timer") - 5 * (ALARM_LEN + 0.2) * 1.0
	if (c4alarm>0)
		set_task(c4alarm, "prepare_alarm")
	emit_sound(g_ent_owner, CHAN_AUTO, ALARM, VOL_NORM, ATTN_STATIC, 0, PITCH_NORM)
	#endif
}
 
#if defined ALARM
public prepare_alarm()
{
	set_task(ALARM_LEN, "play_alarm", _, _, _, "a", 4)
}
 
public play_alarm()
{
	emit_sound(g_ent_owner, CHAN_AUTO, ALARM, 0.8, ATTN_NORM, 0, PITCH_NORM)
}
#endif
 
public BombDefused()
{
	g_ent_owner = 0
}
 
public BombExploded()
{
	g_ent_owner = 1
}
 
public BombSpawned()
{
	if (!g_ent_owner)
	{
		new LogMsg[64], username[32]
		read_logdata (LogMsg, 63)
		parse_loguser (LogMsg, username, 31)
		replace(username, 31, "^"", "")
		new id = get_user_index(username)
 
		new ent = -1, owner
 
		while ((ent = fm_find_ent_by_class(ent, "weapon_c4")))
		{
 
			owner = pev(ent, pev_owner)
			if (owner==id)
			{
				g_ent_bp = ent
				break
			}
		}
		g_ent_owner = id
	}
}
 
public ModelChanged(ent, model[])
{
	if(!pev_valid(ent))
		return FMRES_IGNORED
 
	#if defined W_BACKPACK
		if (equal(model, "models/w_backpack.mdl"))
		{
			engfunc(EngFunc_SetModel, ent, W_BACKPACK)
			return FMRES_SUPERCEDE
		}
	#endif
 
	#if defined W_C4
		if (equal(model, "models/w_c4.mdl"))
		{
			engfunc(EngFunc_SetModel, ent, W_C4)
			return FMRES_SUPERCEDE
		}
	#endif
 
	return FMRES_IGNORED
}
 
public WeaponChanged(id)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE
 
	new model[32]
 
	pev(id, pev_viewmodel2, model, 31)
 
	#if defined V_C4
 
	if (equal(model, "models/v_c4.mdl"))
	{
		set_pev(id, pev_viewmodel2, V_C4)
		return PLUGIN_CONTINUE
	}
	#endif
 
	#if defined P_C4
 
	if (equal(model, "models/p_c4.mdl"))
	{
		set_pev(id, pev_weaponmodel2, P_C4)
		return PLUGIN_CONTINUE
	}
	#endif
 
	return PLUGIN_CONTINUE
}
 
public check_geiger()
{
	if (get_pcvar_num(pc_geiger) && g_ent_owner)
	{
		new players[32], num
		get_players(players, num)
		for (new i; i<num; i++)
		{
			if (is_user_alive(players[i]))
				geiger(players[i])
		}
	}
 
 
}
 
public geiger(id)
{
	if (id==g_ent_owner)
	{
		if (g_inrange[id])
		{
			message_begin(MSG_ONE, g_msg_geiger, {0,0,0}, id) 
			write_byte(0)
			message_end()
			g_inrange[id] = false
		}
		return PLUGIN_CONTINUE
	}
 
	new distance
 
	if (g_ent_c4)
		distance = fm_get_entity_distance(id, g_ent_owner)/10
	else
		distance = fm_get_entity_distance(id, g_ent_owner)/5
 
	if (distance<=255)
	{
		message_begin(MSG_ONE, g_msg_geiger, {0,0,0}, id) 
		write_byte(distance)
		message_end()
		g_inrange[id] = true
	} else if (g_inrange[id])
	{
		message_begin(MSG_ONE, g_msg_geiger, {0,0,0}, id) 
		write_byte(0)
		message_end()
		g_inrange[id] = false
	}
 
	return PLUGIN_CONTINUE
}
 
public Check_Icon(msgid, msgDest, id)
{
	if (!get_pcvar_num(pc_geiger_icon))
		return PLUGIN_CONTINUE
 
	new icon[10]
	get_msg_arg_string(2, icon, 9)
	if (equal(icon, "c4"))
		set_msg_arg_string(2, "dmg_rad")
 
	return PLUGIN_CONTINUE
}
 
public Block_Sound(entity, channel, const sound[])
{
	if (equali(sound, "weapons/c4_beep", 15))
		if (get_pcvar_num(pc_nuke_c4_nosound))
			return FMRES_SUPERCEDE
 
	return FMRES_IGNORED
}
 
public Block_Sprite(msg_id, msg_type, id)
{
	if (get_msg_arg_int(1)!=23)
		return PLUGIN_CONTINUE
 
	if (get_msg_arg_int(5)==pr_ledglow)
		if (get_pcvar_num(pc_nuke_c4_noled))
			return PLUGIN_HANDLED
 
	return PLUGIN_CONTINUE
}
 
public plugin_precache()
{
	#if defined W_BACKPACK
		precache_model(W_BACKPACK)
	#endif
 
	#if defined W_C4
		precache_model(W_C4)
	#endif
 
	#if defined V_C4
		precache_model(V_C4)
	#endif
 
	#if defined P_C4
		precache_model(P_C4)
	#endif
 
	#if defined ALARM
		precache_sound(ALARM)
	#endif
 
	pr_ledglow = precache_model("sprites/ledglow.spr")
 
	precache_sound("misc/bomba.wav");
 
	precache_sound(MSOUND)
 
	new i
 
	for(i = 0; i < sizeof g_TutorPrecache; i++) 
	{	
		precache_generic(g_TutorPrecache[i])
	}
}
public planted()
{
	t = get_pcvar_num(pc);
	set_task(1.0, "bomb_tick", TID, "", 0, "b");
}
public bomb_tick()
{
	t--;
	if(t == 30)
	{
		client_cmd(0, "spk misc/bomba.wav");
	}
	if(t <= 0)
	{
		if(task_exists(TID))
		{
			remove_task(TID);
		}
	}
 
}
public Koniec_Rundy()
{
	if(task_exists(TID))
	{
		remove_task(TID);
	}
}