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. | /* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fakemeta_util>
#include <codmod>
#define MAKE_MATTERY 7045
new const nazwa[] = "BFG10000";
new const opis[] = "Posiadasz bron z 2 wiazkami, ktora zadaje powazne obrazenia wrogom znajdujacym sie w poblizu";
new const bronie = 1<<CSW_P90 1<<CSW_M249 1<<CSW_USP;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bool: ma_klase[33], bool: ma_bron[33];
new Float:idle[33]
new bfg10k_ammo[33]
new bfg_shooting[33];
enum {NONE = 0, SHOOTING, SHOOTED };
new sprite_blast;
new sprite_laser;
public plugin_init()
{
register_plugin(nazwa, "1.0", "Hleb & Wi'Waldi");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_forward(FM_CmdStart, "CmdStart")
register_forward(FM_PlayerPreThink, "PreThink");
RegisterHam(Ham_Item_Deploy, "weapon_p90", "Weapon_Deploy", 1);
RegisterHam(Ham_Weapon_WeaponIdle, "weapon_p90", "Weapon_WeaponIdle");
register_event("ResetHUD", "ResetHUD", "abe");
register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0");
register_touch("bfg10000", "*" , "DotykWiazki");
register_think("bfg10000", "BFGThink");
}
public plugin_precache()
{
sprite_blast = precache_model("sprites/dexplo.spr");
sprite_laser = precache_model("sprites/dot.spr")
precache_sound("weapons/bfg_fire.wav");
precache_model("models/bfg_mattery.mdl");
precache_model("models/v_bfg10000.mdl");
precache_model("models/p_bfg10000.mdl");
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[Klasa: BFG10000] Nie masz uprawnien, aby uzywac tej klasy. Jesli chcesz je miec to kup klase")
return COD_STOP;
}
cod_give_weapon(id, CSW_P90)
ma_klase[id] = true;
ma_bron[id] = true;
bfg10k_ammo[id] = 2;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
cod_take_weapon(id, CSW_P90)
ma_klase[id] = false;
ma_bron[id] = false;
bfg10k_ammo[id] = 0;
}
public CmdStart(id, uc_handle)
{
new weapon = get_user_weapon(id);
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
if(weapon == 30 && ma_bron[id])
{
if(!ma_klase[id])
return FMRES_IGNORED
if(!bfg10k_ammo[id] && (pev(id, pev_oldbuttons) & IN_ATTACK))
{
client_print(id, print_center, "Wykorzystales juz wszystkie wiazki!");
return PLUGIN_CONTINUE;
}
new Button = get_uc(uc_handle, UC_Buttons)
new OldButton = pev(id, pev_oldbuttons)
new ent = fm_find_ent_by_owner(-1, "weapon_p90", id);
if(Button & IN_ATTACK && !(OldButton & IN_ATTACK) && bfg_shooting[id] == NONE)
{
Button &= ~IN_ATTACK;
set_uc(uc_handle, UC_Buttons, Button);
if(!bfg10k_ammo[id] || !idle[id])
return FMRES_IGNORED;
if(idle[id] && (get_gametime()-idle[id]<=0.7))
return FMRES_IGNORED;
set_pev(id, pev_weaponanim, 4);
emit_sound(id, CHAN_ITEM, "weapons/bfg_fire.wav", 0.5, ATTN_NORM, 0, PITCH_NORM);
message_begin(MSG_ONE, get_user_msgid("BarTime"), {0, 0, 0}, id)
write_byte(1)
write_byte(0)
message_end()
bfg_shooting[id] = SHOOTING
set_task(0.8, "MakeMattery", id+MAKE_MATTERY)
return FMRES_IGNORED
}
if(bfg_shooting[id] == SHOOTING && (Button & (IN_USE | IN_ATTACK2 | IN_BACK | IN_FORWARD | IN_CANCEL | IN_JUMP | IN_MOVELEFT | IN_MOVERIGHT | IN_RIGHT)))
{
remove_task(id+MAKE_MATTERY)
message_begin(MSG_ONE, get_user_msgid("BarTime"), {0, 0, 0}, id)
write_byte(0)
write_byte(0)
message_end()
bfg_shooting[id] = NONE
emit_sound(id, CHAN_ITEM, "weapons/bfg_fire.wav", 0.5, ATTN_NORM, (1<<5), PITCH_NORM)
return FMRES_IGNORED
}
if(Button & IN_RELOAD)
{
Button &= ~IN_RELOAD;
set_uc(uc_handle, 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, 30, bfg10k_ammo[id]);
}
else if(weapon != 30 && ma_bron[id])
{
idle[id] = 0.0;
if(task_exists(id+MAKE_MATTERY))
{
remove_task(id+MAKE_MATTERY)
message_begin(MSG_ONE, get_user_msgid("BarTime"), {0, 0, 0}, id)
write_byte(0)
write_byte(0)
message_end()
bfg_shooting[id] = NONE
emit_sound(id, CHAN_ITEM, "weapons/bfg_fire.wav", 0.5, ATTN_NORM, (1<<5), PITCH_NORM)
return FMRES_IGNORED
}
}
return FMRES_IGNORED
}
public MakeMattery(id)
{
id-=MAKE_MATTERY
bfg_shooting[id] = SHOOTED
bfg10k_ammo[id]--
new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
entity_get_vector(id, EV_VEC_v_angle, vAngle);
entity_get_vector(id, EV_VEC_origin , Origin);
set_pev(id, pev_weaponanim, 2);
new ent = create_entity("info_target");
entity_set_string(ent, EV_SZ_classname, "bfg10000");
entity_set_model(ent, "models/bfg_mattery.mdl");
fm_set_user_rendering(ent, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 255)
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenShake"),_, id);
write_short(255<<14);
write_short(2<<12);
write_short(255<<14);
message_end();
vAngle[0] *= -1.0;
entity_set_origin(ent, Origin);
entity_set_vector(ent, EV_VEC_angles, vAngle);
entity_set_int(ent, EV_INT_effects, 2);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY);
entity_set_edict(ent, EV_ENT_owner, id);
VelocityByAim(id, 300 , Velocity);
entity_set_vector(ent, EV_VEC_velocity ,Velocity);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
}
public DotykWiazki(ent)
{
if (!is_valid_ent(ent))
return PLUGIN_CONTINUE;
new attacker = entity_get_edict(ent, EV_ENT_owner);
new Float:fOrigin[3];
entity_get_vector(ent, EV_VEC_origin, fOrigin);
new iOrigin[3];
for(new i=0;i<3;i++)
iOrigin[i] = floatround(fOrigin[i]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 120.0, entlist, 32);
for (new i=0; i<=numfound; i++)
{
new pid = entlist[i];
if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || !(pev(ent, pev_flags) & FL_ONGROUND))
continue;
cod_inflict_damage(attacker, pid, 40.0, 0.2, ent, (1<<24));
}
remove_entity(ent);
bfg_shooting[attacker] = NONE
return PLUGIN_CONTINUE
}
public ResetHUD(id)
{
bfg10k_ammo[id] = 2;
bfg_shooting[id] = NONE
}
public client_disconnect(id)
{
new ent = find_ent_by_class(0, "bfg10000");
while(ent > 0)
{
if(entity_get_edict(id, EV_ENT_owner) == id)
remove_entity(ent);
ent = find_ent_by_class(ent, "bfg10000");
}
}
public BFGThink(ent)
{
if(entity_get_int(ent, EV_INT_iuser2))
return PLUGIN_CONTINUE;
entity_set_int(ent, EV_INT_iuser1, 1);
new attacker = entity_get_edict(ent, EV_ENT_owner);
new entlist[33];
new numfound = find_sphere_class(ent, "player", 500.0 , entlist, 32);
for (new i=0; i<numfound; i++)
{
new pid = entlist[i];
if (is_user_alive(pid) && get_user_team(attacker) != get_user_team(pid))
{
cod_inflict_damage(attacker, pid, 15.0, 0.1, ent, (1<<24));
new Float:vec1[3]
entity_get_vector(ent, EV_VEC_origin, vec1);
new vec2[3]
get_user_origin(pid, vec2)
new iOrigin[3];
for(new i=0;i<3;i++)
iOrigin[i] = floatround(vec1[i]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (0) //TE_BEAMENTPOINTS 0
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_coord(vec2[0])
write_coord(vec2[1])
write_coord(vec2[2])
write_short(sprite_laser)
write_byte(1) // framestart
write_byte(5) // framerate
write_byte(2) // life
write_byte(10) // width
write_byte(0) // noise
write_byte(0) // r, g, b
write_byte(255) // r, g, b
write_byte(0) // r, g, b
write_byte(255) // brightness
write_byte(150) // speed
message_end()
}
}
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
return PLUGIN_CONTINUE;
}
public Weapon_Deploy(ent)
{
new id = get_pdata_cbase(ent, 41, 4);
if(ma_bron[id])
{
set_pev(id, pev_viewmodel2, "models/v_bfg10000.mdl");
set_pev(id, pev_weaponmodel2, "models/p_bfg10000.mdl");
}
return PLUGIN_CONTINUE;
}
public Weapon_WeaponIdle(ent)
{
new id = get_pdata_cbase(ent, 41, 4);
if(get_user_weapon(id) == 30 && ma_bron[id])
{
if(!idle[id])
idle[id] = get_gametime();
}
}
public Nowa_Runda()
{
new ent = find_ent_by_class(-1, "bfg10000");
while(ent > 0)
{
remove_entity(ent);
ent = find_ent_by_class(ent, "bfg10000");
}
} |