new const nazwa[] = "Saper z Bazookom"; new const opis[] = "Mp5Navy Ma Miny i rakiety"; new const bronie = 1<<CSW_MP5NAVY; new const zdrowie = 0; new const kondycja = 10; new const inteligencja = 0; new const wytrzymalosc = 5;
Kod Klasy. Sma w Załączniku.
Spoiler
#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <colorchat>
#include <engine>
#include <fakemeta>
#define SMOKETRAIL_RATE 0.2
new bool:ma_klase[33];
new const nazwa[] = "Saper z Bazookom";
new const opis[] = "Mp5Navy Ma Miny i rakiety";
new const bronie = 1<<CSW_MP5NAVY;
new const zdrowie = 0;
new const kondycja = 10;
new const inteligencja = 0;
new const wytrzymalosc = 5;
new ilosc_rakiet_gracza[33];
new Float:poprzednia_rakieta_gracza[33];
new ilosc_min_gracza[33];
new bool:ma_rakiety[33];
new bool:ma_miny[33];
new sprite_blast;
new HUD;
public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
register_touch("Rocket", "*" , "DotykRakiety");
register_think("Rocket","rocketThink")
register_touch("Mine", "player", "DotykMiny");
register_forward(FM_EmitSound, "EmitSound");
register_clcmd("radio2", "Zmiana");
register_clcmd("say /day","cod_class_enabled");
HUD = CreateHudSyncObj();
}
public plugin_precache()
{
sprite_blast = precache_model("sprites/dexplo.spr");
precache_model("models/rpgrocket.mdl")
precache_model("models/mine.mdl");
precache_sound("weapons/rocketfire1.wav")
precache_sound("weapons/mine_charge.wav")
precache_sound("weapons/mine_deploy.wav");
}
public Odrodzenie(id)
{
if(ma_klase[id])
{
ilosc_rakiet_gracza[id] = 3;
ilosc_min_gracza[id] = 3;
ma_miny[id] = true;
ma_rakiety[id] = false;
}
}
public cod_class_enabled(id)
{
ilosc_rakiet_gracza[id] = 3;
ilosc_min_gracza[id] = 3;
ma_miny[id] = true;
ma_rakiety[id] = false;
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ilosc_rakiet_gracza[id] = 0;
ilosc_min_gracza[id] = 0;
ma_miny[id] = false;
ma_rakiety[id] = false;
ma_klase[id] = false;
}
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{
if(equal(szSound, "common/wpn_denyselect.wav"))
{
if(ma_rakiety[id])
{
StworzRakiete(id)
return FMRES_IGNORED;
}
if(ma_miny[id])
{
PostawMine(id)
return FMRES_IGNORED;
}
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public StworzRakiete(id)
{
if(!ma_rakiety[id] || !ma_klase[id])
return PLUGIN_CONTINUE;
if (!ilosc_rakiet_gracza[id])
{
client_print(id, print_center, "Wykrzystales juz wszystkie rakiety!");
return PLUGIN_CONTINUE;
}
if(poprzednia_rakieta_gracza[id] + 2.0 > get_gametime())
{
client_print(id, print_center, "Rakiet mozesz uzywac co 2 sekundy!");
return PLUGIN_CONTINUE;
}
if (is_user_alive(id))
{
poprzednia_rakieta_gracza[id] = get_gametime();
ilosc_rakiet_gracza[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);
new Ent = create_entity("info_target");
entity_set_string(Ent, EV_SZ_classname, "Rocket");
entity_set_model(Ent, "models/rpgrocket.mdl");
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);
emit_sound(Ent, CHAN_WEAPON, "weapons/rocketfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
VelocityByAim(id, 1000 , Velocity);
entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
set_pev(Ent, pev_nextthink, get_gametime() + SMOKETRAIL_RATE)
}
return PLUGIN_CONTINUE;
}
public rocketThink(ent){
if(!pev_valid(ent)){
return PLUGIN_CONTINUE;
}
new Float:origin[3]
pev(ent, pev_origin, origin)
engfunc(EngFunc_PlaybackEvent, 0, ent, 26, 0.0, origin, Float:{0.0, 0.0, 0.0}, 5.0, 5.0, 0, 2, 0, 0);
set_pev(ent, pev_nextthink, get_gametime() + SMOKETRAIL_RATE)
return PLUGIN_CONTINUE;
}
public DotykRakiety(ent)
{
if ( !is_valid_ent(ent))
return;
new attacker = entity_get_edict(ent, EV_ENT_owner);
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
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); // scale
write_byte(20); // framerate
write_byte(0);// flags
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 230.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;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 50.0 , 1);
}
remove_entity(ent);
}
public PostawMine(id)
{
if(!ma_klase[id] || !ma_miny[id])
return PLUGIN_CONTINUE;
if (!ilosc_min_gracza[id])
{
client_print(id, print_center, "Wykorzystales juz wszystkie miny!");
return PLUGIN_CONTINUE;
}
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, "models/mine.mdl");
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
drop_to_floor(ent);
entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) ;
set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50) ;
emit_sound( ent, CHAN_VOICE, "weapons/mine_deploy.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
emit_sound( ent, CHAN_BODY , "weapons/mine_charge.wav", 0.2, ATTN_NORM, 0, PITCH_NORM );
return PLUGIN_CONTINUE;
}
public DotykMiny(ent, id)
{
new attacker = entity_get_edict(ent, EV_ENT_owner);
if (get_user_team(attacker) != get_user_team(id))
{
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
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); // scale
write_byte(20); // framerate
write_byte(0);// flags
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;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0 , 1);
}
remove_entity(ent);
}
}
public Zmiana(id)
{
if(!ma_klase[id])
return PLUGIN_HANDLED;
set_hudmessage(255, 212, 0, 0.75, 0.33, 1, 6.0, 4.0);
if(ma_miny[id])
{
ma_miny[id] = false;
ma_rakiety[id] = true;
ShowSyncHudMsg(id, HUD, "Item:Rakieta[%i]",ilosc_rakiet_gracza[id]);
return PLUGIN_HANDLED;
}
if(ma_rakiety[id])
{
ma_rakiety[id] = false;
ma_miny[id] = true;
ShowSyncHudMsg(id, HUD, "Item:Mina[%i]",ilosc_min_gracza[id]);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
#include <codmod>
#include <hamsandwich>
#include <colorchat>
#include <engine>
#include <fakemeta>
#define SMOKETRAIL_RATE 0.2
new bool:ma_klase[33];
new const nazwa[] = "Saper z Bazookom";
new const opis[] = "Mp5Navy Ma Miny i rakiety";
new const bronie = 1<<CSW_MP5NAVY;
new const zdrowie = 0;
new const kondycja = 10;
new const inteligencja = 0;
new const wytrzymalosc = 5;
new ilosc_rakiet_gracza[33];
new Float:poprzednia_rakieta_gracza[33];
new ilosc_min_gracza[33];
new bool:ma_rakiety[33];
new bool:ma_miny[33];
new sprite_blast;
new HUD;
public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
register_touch("Rocket", "*" , "DotykRakiety");
register_think("Rocket","rocketThink")
register_touch("Mine", "player", "DotykMiny");
register_forward(FM_EmitSound, "EmitSound");
register_clcmd("radio2", "Zmiana");
register_clcmd("say /day","cod_class_enabled");
HUD = CreateHudSyncObj();
}
public plugin_precache()
{
sprite_blast = precache_model("sprites/dexplo.spr");
precache_model("models/rpgrocket.mdl")
precache_model("models/mine.mdl");
precache_sound("weapons/rocketfire1.wav")
precache_sound("weapons/mine_charge.wav")
precache_sound("weapons/mine_deploy.wav");
}
public Odrodzenie(id)
{
if(ma_klase[id])
{
ilosc_rakiet_gracza[id] = 3;
ilosc_min_gracza[id] = 3;
ma_miny[id] = true;
ma_rakiety[id] = false;
}
}
public cod_class_enabled(id)
{
ilosc_rakiet_gracza[id] = 3;
ilosc_min_gracza[id] = 3;
ma_miny[id] = true;
ma_rakiety[id] = false;
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ilosc_rakiet_gracza[id] = 0;
ilosc_min_gracza[id] = 0;
ma_miny[id] = false;
ma_rakiety[id] = false;
ma_klase[id] = false;
}
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{
if(equal(szSound, "common/wpn_denyselect.wav"))
{
if(ma_rakiety[id])
{
StworzRakiete(id)
return FMRES_IGNORED;
}
if(ma_miny[id])
{
PostawMine(id)
return FMRES_IGNORED;
}
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public StworzRakiete(id)
{
if(!ma_rakiety[id] || !ma_klase[id])
return PLUGIN_CONTINUE;
if (!ilosc_rakiet_gracza[id])
{
client_print(id, print_center, "Wykrzystales juz wszystkie rakiety!");
return PLUGIN_CONTINUE;
}
if(poprzednia_rakieta_gracza[id] + 2.0 > get_gametime())
{
client_print(id, print_center, "Rakiet mozesz uzywac co 2 sekundy!");
return PLUGIN_CONTINUE;
}
if (is_user_alive(id))
{
poprzednia_rakieta_gracza[id] = get_gametime();
ilosc_rakiet_gracza[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);
new Ent = create_entity("info_target");
entity_set_string(Ent, EV_SZ_classname, "Rocket");
entity_set_model(Ent, "models/rpgrocket.mdl");
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);
emit_sound(Ent, CHAN_WEAPON, "weapons/rocketfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
VelocityByAim(id, 1000 , Velocity);
entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
set_pev(Ent, pev_nextthink, get_gametime() + SMOKETRAIL_RATE)
}
return PLUGIN_CONTINUE;
}
public rocketThink(ent){
if(!pev_valid(ent)){
return PLUGIN_CONTINUE;
}
new Float:origin[3]
pev(ent, pev_origin, origin)
engfunc(EngFunc_PlaybackEvent, 0, ent, 26, 0.0, origin, Float:{0.0, 0.0, 0.0}, 5.0, 5.0, 0, 2, 0, 0);
set_pev(ent, pev_nextthink, get_gametime() + SMOKETRAIL_RATE)
return PLUGIN_CONTINUE;
}
public DotykRakiety(ent)
{
if ( !is_valid_ent(ent))
return;
new attacker = entity_get_edict(ent, EV_ENT_owner);
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
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); // scale
write_byte(20); // framerate
write_byte(0);// flags
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 230.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;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 50.0 , 1);
}
remove_entity(ent);
}
public PostawMine(id)
{
if(!ma_klase[id] || !ma_miny[id])
return PLUGIN_CONTINUE;
if (!ilosc_min_gracza[id])
{
client_print(id, print_center, "Wykorzystales juz wszystkie miny!");
return PLUGIN_CONTINUE;
}
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, "models/mine.mdl");
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
drop_to_floor(ent);
entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) ;
set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50) ;
emit_sound( ent, CHAN_VOICE, "weapons/mine_deploy.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
emit_sound( ent, CHAN_BODY , "weapons/mine_charge.wav", 0.2, ATTN_NORM, 0, PITCH_NORM );
return PLUGIN_CONTINUE;
}
public DotykMiny(ent, id)
{
new attacker = entity_get_edict(ent, EV_ENT_owner);
if (get_user_team(attacker) != get_user_team(id))
{
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
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); // scale
write_byte(20); // framerate
write_byte(0);// flags
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;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0 , 1);
}
remove_entity(ent);
}
}
public Zmiana(id)
{
if(!ma_klase[id])
return PLUGIN_HANDLED;
set_hudmessage(255, 212, 0, 0.75, 0.33, 1, 6.0, 4.0);
if(ma_miny[id])
{
ma_miny[id] = false;
ma_rakiety[id] = true;
ShowSyncHudMsg(id, HUD, "Item:Rakieta[%i]",ilosc_rakiet_gracza[id]);
return PLUGIN_HANDLED;
}
if(ma_rakiety[id])
{
ma_rakiety[id] = false;
ma_miny[id] = true;
ShowSyncHudMsg(id, HUD, "Item:Mina[%i]",ilosc_min_gracza[id]);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
Załączone pliki
-
klasa_saperzbazookom.sma 7,33 KB 125 Ilość pobrań
klasa_saperzbazookom.amxx -
klasa_saperzbazookom.sma 7,33 KB 58 Ilość pobrań
klasa_saperzbazookom.amxx