Znalazłem plugin, dzięki któremu wybuchają pociski, postanowiłem zrobić z tym klasę, lecz nie ma żadnych efektów. Mógłby ktoś poprawić moje błędy?
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <engine>
#include <fun>
#define DMG_BULLET (1<<1)
new bool: ma_klase[33];
new LastWeapon[33] = 0
new lastweapon[33]
new spr_laser
new spr_laser_impact
new spr_blast_shroom
new const nazwa[] = "Ciezki snajper";
new const opis[] = "550 procent obrazen z AWP, pociski wybuchajace";
new const bronie = 1<<CSW_AWP;
new const zdrowie = 20;
new const kondycja = -20;
new const inteligencja = 0;
new const wytrzymalosc = 20;
public plugin_init()
{
register_plugin(nazwa, "1.0", "Eustachy8");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
register_event( "Damage", "EventDamage", "be" )
register_logevent( "event_roundend", 2, "0=World triggered", "1=Round_End" )
register_event( "CurWeapon", "make_tracer", "be", "1=1", "3>0" )
register_cvar( "exploding_bullets", "20" )
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(damagebits & DMG_BULLET)
{
new weapon = get_user_weapon(idattacker);
if(weapon == CSW_AWP)
cod_inflict_damage(idattacker, this, damage*5.5, 0.0, idinflictor, damagebits);
}
return HAM_IGNORED;
}
public plugin_precache()
{
spr_laser = precache_model( "sprites/laserbeam.spr" )
spr_laser_impact = precache_model( "sprites/zerogxplode.spr" )
spr_blast_shroom = precache_model( "sprites/mushroom.spr" )
return PLUGIN_CONTINUE
}
public make_tracer(id) {
new weap = read_data(2)
if ( weap == CSW_AWP && is_user_alive(id) && ma_klase[id] == true ) {
new vector1[3], vector2[3]
get_user_origin( id, vector1, 1 )
get_user_origin( id, vector2, 4 )
// tracer beam
message_begin( MSG_PAS, SVC_TEMPENTITY, vector1 )
write_byte( 0 ) // TE_BEAMPOINTS
write_coord( vector1[0] )
write_coord( vector1[1] )
write_coord( vector1[2] )
write_coord( vector2[0] )
write_coord( vector2[1] )
write_coord( vector2[2] )
write_short( spr_laser ) // laserbeam sprite
write_byte( 0 ) // starting frame
write_byte( 10 ) // frame rate
write_byte( 2 ) // life in 0.1s
write_byte( 4 ) // line width in 0.1u
write_byte( 1 ) // noise in 0.1u
write_byte( 0 ) // red
write_byte( 153 ) // green
write_byte( 0 ) // blue
write_byte( 80 ) // brightness
write_byte( 100 ) // scroll speed
message_end()
// bullet impact explosion
message_begin( MSG_PAS, SVC_TEMPENTITY, vector2 )
write_byte( 3 ) // TE_EXPLOSION
write_coord( vector2[0] ) // end point of beam
write_coord( vector2[1] )
write_coord( vector2[2] )
write_short( spr_laser_impact ) // blast sprite
write_byte( 10 ) // scale in 0.1u
write_byte( 30 ) // frame rate
write_byte( 8 ) // TE_EXPLFLAG_NOPARTICLES
message_end() // ..unless i'm mistaken, noparticles helps avoid a crash
}
return PLUGIN_CONTINUE
}
public EventDamage(id)
{
new weapon, bodypart, attacker_id = get_user_attacker( id, weapon, bodypart )
if( !is_user_alive( attacker_id ) ) return PLUGIN_CONTINUE
new damage = read_data(2)
if( ma_klase[id] == true && weapon == CSW_AWP )
{
new health = get_user_health( id )
if (!is_user_connected( attacker_id ) ) return PLUGIN_CONTINUE
//if ( attacker_id == id ) return PLUGIN_CONTINUE
if ( ( ( 1.0 * damage ) / ( 1.0 * (health + damage ) ) ) < 0.01 ) return PLUGIN_CONTINUE
new origin[3]
get_user_origin( id, origin )
set_user_rendering( id, kRenderFxFadeSlow, 255, 255, 255, kRenderTransColor, 250 );
message_begin( MSG_ALL, SVC_TEMPENTITY )
write_byte( 3 ) // TE_EXPLOSION
write_coord( origin[0] )
write_coord( origin[1] )
write_coord( origin[2]-22 )
write_short( spr_blast_shroom ) // mushroom cloud
write_byte( 40 ) // scale in 0.1u
write_byte( 12 ) // frame rate
write_byte( 12 ) // TE_EXPLFLAG_NOPARTICLES & TE_EXPLFLAG_NOSOUND
message_end()
message_begin( MSG_ALL, SVC_TEMPENTITY )
write_byte( 10 ) // TE_LAVASPLASH
write_coord( origin[0] )
write_coord( origin[1] )
write_coord( origin[2]-26 )
message_end()
}
if(weapon == CSW_AWP )
{
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
user_kill(id, 1)
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ),{ 0,0,0 },0 )
write_byte( attacker_id )
write_byte( id )
write_byte( 0 )
write_string( "awp" )
message_end()
}
//new deaths = get_user_deaths( id );
//set_user_deaths( id, deaths+1 )
return PLUGIN_HANDLED
}