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 13377075000 dodana przez Gość, 22.05.2012 18:25
Typ:


Czołgista
13377075000
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.
#include <amxmodx>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
#include <codmod>
 
#define MAX 32
 
#define nazwa "Czolgista ( Premium )"
#define opis "Dostaje Bazuke za P228"
 
new const bronie = 1<<CSW_GALIL|1<<CSW_P228;
new const zdrowie = 20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;
 
new bool:wystrzelony[MAX+1][MAX+1];	
new bool:ma_klase[MAX+1], bool:has_weapon[MAX+1], bool:reloading[MAX+1], rockets[MAX+1], Float:idle[MAX+1];
new sprite_blast, sprite_nadeexp, sprite_smoke, sprite_trail;
 
public plugin_init() 
{
	register_plugin(nazwa, "1.0", "cypis");
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
 
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_p228", "Weapon_Deploy", 1);
	RegisterHam(Ham_Weapon_WeaponIdle, "weapon_p228", "Weapon_WeaponIdle");
 
	register_forward(FM_CmdStart, "CmdStart");
	register_forward(FM_SetModel, "SetModel");
	register_forward(FM_Touch, "fw_Touch")
 
	register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
 
	register_cvar("cod_law_damage", "120.0");
	register_cvar("cod_law_radius", "250.0");
	register_cvar("cod_law_rockets", "15");
}
 
public plugin_precache()
{
	sprite_blast = precache_model("sprites/dexplo.spr");
	sprite_smoke = precache_model("sprites/steam1.spr");
	sprite_nadeexp = precache_model("sprites/law_exp.spr");
	sprite_trail = precache_model("sprites/smoke.spr");
 
	precache_model("models/p_law.mdl");
	precache_model("models/w_law.mdl");
	precache_model("models/v_law.mdl");
	precache_model("models/s_grenade.mdl");
	precache_sound("weapons/law_shoot1.wav");
}
 
public cod_class_enabled(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_H ))
	{
		client_print(id, print_chat, "[ Czolgista ( Premium ) ] Kup klase zeby grac :D", nazwa)
		return COD_STOP;
	}
	ma_klase[id] = true;
	Odrodzenie(id)
 
	return COD_CONTINUE;
}
 
public cod_class_disabled(id)
{
	ma_klase[id] = false;
	has_weapon[id] = false;
	rockets[id] = 0;
}
 
public Odrodzenie(id)
{
	if(is_user_alive(id) && ma_klase[id])
	{
		has_weapon[id] = true;
		rockets[id] = get_cvar_num("cod_law_rockets");
	}	
}
 
public CmdStart(id, uc)
{
	if(!is_user_alive(id))
		return FMRES_IGNORED;
 
	new weapon = get_user_weapon(id);
	if(weapon == 1 && has_weapon[id])
	{ 
		new button = get_uc(uc, UC_Buttons);
		new ent = fm_find_ent_by_owner(-1, "weapon_p228", id);
 
		if(button & IN_ATTACK)
		{
			button &= ~IN_ATTACK;
			set_uc(uc, UC_Buttons, button);
 
			if(!rockets[id] || reloading[id] || !idle[id]) 
				return FMRES_IGNORED;
			if(idle[id] && (get_gametime()-idle[id]<=0.4)) 
				return FMRES_IGNORED;
 
			new Float:Origin[3], Float:Angle[3], Float:Velocity[3];
			pev(id, pev_origin, Origin);
			pev(id, pev_v_angle, Angle);
			velocity_by_aim(id, 1000, Velocity);
 
			Angle[0] *= -1.0
 
			new ent = fm_create_entity("info_target")
			set_pev(ent, pev_classname, "rocket");
			engfunc(EngFunc_SetModel, ent, "models/s_grenade.mdl");
 
			set_pev(ent, pev_solid, SOLID_BBOX);
			set_pev(ent, pev_movetype, MOVETYPE_TOSS);
			set_pev(ent, pev_owner, id);
			set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0});
			set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0});
			set_pev(ent, pev_gravity, 0.35);
 
			set_pev(ent, pev_origin, Origin);
			set_pev(ent, pev_velocity, Velocity);
			set_pev(ent, pev_angles, Angle);
 
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW)
			write_short(ent)
			write_short(sprite_trail)
			write_byte(6)
			write_byte(3)
			write_byte(224)	
			write_byte(224)	
			write_byte(255)
			write_byte(100)
			message_end()	
 
			set_pev(id, pev_weaponanim, 7);
			new entwpn = fm_find_ent_by_owner(-1, "weapon_p228", id)
			if(entwpn)
				set_pdata_float(entwpn, 48, 1.5+3.0, 4)
			set_pdata_float(id, 83, 1.5, 4)
 
			reloading[id] = true;
			emit_sound(id, CHAN_WEAPON, "weapons/law_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
 
			if(task_exists(id+3512)) 
				remove_task(id+3512)
 
			set_task(1.5, "task_launcher_reload", id+3512)
			rockets[id]--;
		}
		else if(button & IN_RELOAD)
		{
			button &= ~IN_RELOAD;
			set_uc(uc, UC_Buttons, button);
 
			set_pev(id, pev_weaponanim, 0);
			set_pdata_float(id, 83, 0.5, 4);
			if(ent)
				set_pdata_float(ent, 48, 0.5+3.0, 4);
		}
 
		if(ent)
			cs_set_weapon_ammo(ent, -1);
		cs_set_user_bpammo(id, 1, rockets[id]);		
	}
	else if(weapon != 1 && has_weapon[id])
		idle[id] = 0.0;
 
	return FMRES_IGNORED;
}	
 
public Weapon_Deploy(ent)
{
	new id = get_pdata_cbase(ent, 41, 4);
	if(has_weapon[id])
	{
		set_pev(id, pev_viewmodel2, "models/v_law.mdl");
		set_pev(id, pev_weaponmodel2, "models/p_law.mdl");
	}
	return PLUGIN_CONTINUE;
}
 
public Weapon_WeaponIdle(ent)
{
	new id = get_pdata_cbase(ent, 41, 4);
	if(get_user_weapon(id) == 1 && has_weapon[id])
	{
		if(!idle[id]) 
			idle[id] = get_gametime();
	}
}
 
public SetModel(ent, model[])
{
	if(!pev_valid(ent))
		return FMRES_IGNORED
 
	if(!equal(model, "models/w_p228.mdl")) 
		return FMRES_IGNORED;
 
	new id = pev(ent, pev_owner);
	if(!has_weapon[id])
		return FMRES_IGNORED;
 
	engfunc(EngFunc_SetModel, ent, "models/w_law.mdl");
	set_pev(ent, pev_iuser4, rockets[id]);
	has_weapon[id] = false;
	return FMRES_SUPERCEDE;
}
 
public task_launcher_reload(id)
{
	id -= 3512;
	reloading[id] = false;
	set_pev(id, pev_weaponanim, 0);
}
 
public fw_Touch(ent, id)
{
	if(!pev_valid(ent))
		return FMRES_IGNORED
 
	new class[32]
	pev(ent, pev_classname, class, charsmax(class))
 
	if(!equal(class, "rocket"))
		return FMRES_IGNORED
 
	new attacker = pev(ent, pev_owner);
	new Float:entOrigin[3], Float:fDamage, Float:Origin[3];
	pev(ent, pev_origin, entOrigin);
	entOrigin[2] += 1.0;
 
	new Float:g_damage = get_cvar_float("cod_law_damage");
	new Float:g_radius = get_cvar_float("cod_law_radius");
 
	new victim = -1
	while((victim = engfunc(EngFunc_FindEntityInSphere, victim, entOrigin, g_radius)) != 0)
	{		
		if(!is_user_alive(victim) || get_user_team(attacker) == get_user_team(victim))
			continue;
 
		pev(victim, pev_origin, Origin);
		fDamage = g_damage - floatmul(g_damage, floatdiv(get_distance_f(Origin, entOrigin), g_radius));
		fDamage *= estimate_take_hurt(entOrigin, victim);
		if(fDamage>0.0)
			UTIL_Kill(attacker, victim, fDamage, DMG_BULLET);
	}
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
	write_byte(TE_EXPLOSION);
	write_coord(floatround(entOrigin[0]));
	write_coord(floatround(entOrigin[1]));
	write_coord(floatround(entOrigin[2]));
	write_short(sprite_nadeexp); 
	write_byte(40); 
	write_byte(30); 
	write_byte(14); 
	message_end(); 
 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
	write_byte(TE_EXPLOSION); 
	write_coord(floatround(entOrigin[0])); 
	write_coord(floatround(entOrigin[1])); 
	write_coord(floatround(entOrigin[2])); 
	write_short(sprite_blast); 
	write_byte(40);
	write_byte(30);
	write_byte(TE_EXPLFLAG_NONE); 
	message_end(); 
 
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(5)
	write_coord(floatround(entOrigin[0])); 
	write_coord(floatround(entOrigin[1])); 
	write_coord(floatround(entOrigin[2]));
	write_short(sprite_smoke);
	write_byte(35);
	write_byte(5);
	message_end();
	fm_remove_entity(ent);
	return FMRES_IGNORED
}
 
public message_DeathMsg()
{
	static killer, victim;
	killer = get_msg_arg_int(1);
	victim = get_msg_arg_int(2);
 
	if(wystrzelony[killer][victim])
	{
		wystrzelony[killer][victim] = false;
		set_msg_arg_string(4, "grenade");
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_CONTINUE;
}
 
stock Float:estimate_take_hurt(Float:fPoint[3], ent) 
{
	new Float:fOrigin[3], tr, Float:fFraction;
	pev(ent, pev_origin, fOrigin);
	engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, 0, tr);
	get_tr2(tr, TR_flFraction, fFraction);
	if(fFraction == 1.0 || get_tr2(tr, TR_pHit) == ent)
		return 1.0;
	return 0.6;
}
 
stock UTIL_Kill(atakujacy, obrywajacy, Float:damage, damagebits)
{
	if(get_user_health(obrywajacy) <= floatround(damage))
		wystrzelony[atakujacy][obrywajacy] = true;
 
	cod_inflict_damage(atakujacy, obrywajacy, damage, 1.0, atakujacy, damagebits);
}