←  Dodatki

AMXX.pl: Support AMX Mod X i SourceMod

»
Wklejka 132662148814320 dodana przez Ranny Ptaszek, 15.01.2012 10:58
Typ:


132662148814320
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.
#include <amxmodx>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <colorchat>
#include <fun>
 
new const nazwa[] = "SpadochroniarzoSaper";
new const opis[] = "Posiada 3 miny i spadochron";
new const bronie = 1<<CSW_P90;
new const zdrowie = 0;
new const kondycja = 5;
new const inteligencja = 0;
new const wytrzymalosc = 20;
 
new const model[] = "models/QTM_CodMod/mine.mdl"
 
new ilosc_min_gracza[33];
new bool:ma_klase[33];
new bool:uzywa[33];
new pozostale_spadochrony[33];
 
new para_ent[33];
 
new sprite_blast;
 
public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
 
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
 
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
register_event("ResetHUD", "ResetHUD", "abe");
 
register_touch("mine", "player", "DotykMiny");
}
 
public plugin_precache()
{
precache_model(model);
sprite_blast = precache_model("sprites/dexplo.spr");
precache_model("models/parachute.mdl");
}
 
public cod_class_enabled(id)
{
ColorChat(id, GREEN, "Klasa stworzona przez pluginymody.webd.pl");
ilosc_min_gracza[id] = 3;
ma_klase[id] = true;
return COD_CONTINUE;
}
 
public cod_class_disabled(id)
ma_klase[id] = false;
 
public cod_class_skill_used(id)
{
if (!ilosc_min_gracza[id])
{
client_print(id, print_center, "Wykorzystales juz wszystkie miny!");
return PLUGIN_CONTINUE;
}
 
if(pozostale_spadochrony[id] > 0)
{
if(para_ent[id])
uzywa[id] = false;
else
{
uzywa[id] = true;
pozostale_spadochrony[id]--;
}
}
else
ColorChat(id, RED, "Wykorzystales juz wszystkie 5 spadochronow");
 
ilosc_min_gracza[id]--;
 
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
 
new ent = create_entity("info_target");
entity_set_string(ent ,EV_SZ_classname, "mine");
entity_set_edict(ent ,EV_ENT_owner, id);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
entity_set_origin(ent, origin);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
 
entity_set_model(ent, model);
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
 
drop_to_floor(ent);
 
set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50);
 
 
return PLUGIN_CONTINUE;
}
 
public DotykMiny(ent, id)
{
if(!is_valid_ent(ent))
return;
 
new attacker = entity_get_edict(ent, EV_ENT_owner);
if (get_user_team(attacker) != get_user_team(id))
{
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", 90.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))
continue;
 
cod_inflict_damage(attacker, pid, 70.0, 0.8, ent, (1<<24));
}
remove_entity(ent);
}
}
public client_PreThink(id)
{
//parachute.mdl animation information
//0 - deploy - 84 frames
//1 - idle - 39 frames
//2 - detach - 29 frames
 
if (!is_user_alive(id) || !ma_klase[id]) return
 
new Float:fallspeed = -100.0
new Float:frame
 
new flags = get_entity_flags(id)
 
if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {
uzywa[id] = false;
if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)
 
if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
entity_set_int(para_ent[id], EV_INT_sequence, 2)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
return
}
 
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
 
if (frame > 254.0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
 
if (uzywa[id]) {
 
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
 
if (velocity[2] < 0.0) {
 
if(para_ent[id] <= 0) {
para_ent[id] = create_entity("info_target")
if(para_ent[id] > 0) {
entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
entity_set_edict(para_ent[id], EV_ENT_owner, id)
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_model(para_ent[id], "models/parachute.mdl")
entity_set_int(para_ent[id], EV_INT_sequence, 0)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
 
if (para_ent[id] > 0) {
 
entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
set_user_gravity(id, 0.1)
 
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)
 
if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
 
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
 
if (frame > 100.0) {
pozostale_spadochrony[id]--;
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
entity_set_int(para_ent[id], EV_INT_sequence, 1)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
}
}
else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}
}
else if (para_ent[id] > 0 ) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}
}
public ResetHUD(id)
{
ilosc_min_gracza[id] = 3;
uzywa[id] = false;
pozostale_spadochrony[id] = 100;
}
 
public NowaRunda()
{
new ent = find_ent_by_class(-1, "mine");
while(ent > 0)
{
remove_entity(ent);
ent = find_ent_by_class(ent, "mine");
}
}
 
public client_disconnect(id)
{
new ent = find_ent_by_class(0, "mine");
while(ent > 0)
{
if(entity_get_edict(id, EV_ENT_owner) == id)
remove_entity(ent);
ent = find_ent_by_class(ent, "mine");
}
}