| ~Ice*shOt |
06-01-2009 15:25 |
Class Boomer not explode
hmm... why boomer not explode, when i killed he?
PHP Code:
#include <amxmodx> #include <fakemeta> #include <engine> #include <hamsandwich> #include <cstrike> #define PLUGINNAME "[L4D] Class Boomer" #define VERSION "1.0" #define AUTHOR "xFrost" new const ZOMBIE_MODEL[] = "Boomer" #define MODELSET_TASK 100 #define MODELCHANGE_DELAY 0.5 new Float:g_models_targettime new Float:g_roundstarttime new g_has_custom_model[33] new g_player_model[33][32] new g_zombie[33] new explosion, g_maxplayers, white, smoke new bool:lamuerteexplosiva[33] = false new g_sndExplode[] = "umbrella/boomer_boom.wav" public plugin_init() { register_plugin(PLUGINNAME, VERSION, AUTHOR) register_event("DeathMsg", "boomer_death", "a") register_event("HLTV", "event_round_start", "a", "1=0", "2=0") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1) register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue") register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged") g_maxplayers = get_maxplayers() }
public plugin_precache() { explosion = precache_model("sprites/zerogxplode.spr") white = precache_model("sprites/white.spr") smoke = precache_model("sprites/steam1.spr") precache_sound(g_sndExplode)
new modelpath[100] formatex( modelpath, charsmax( modelpath ), "models/player/%s/%s.mdl", ZOMBIE_MODEL, ZOMBIE_MODEL ) engfunc( EngFunc_PrecacheModel, modelpath ) }
public event_round_start() { g_roundstarttime = get_gametime() }
public fw_PlayerSpawn( id ) { if ( !is_user_alive( id ) || !cs_get_user_team( id ) ) return; g_zombie[id] = cs_get_user_team( id ) == CS_TEAM_T ? true : false; remove_task( id + MODELSET_TASK ) if ( g_zombie[id] ) { copy( g_player_model[id], charsmax( g_player_model[] ), ZOMBIE_MODEL )
new currentmodel[32] fm_get_user_model( id, currentmodel, charsmax( currentmodel ) ) if ( !equal( currentmodel, g_player_model[id] ) ) { if ( get_gametime() - g_roundstarttime < 5.0 ) set_task( 5.0 * MODELCHANGE_DELAY, "fm_user_model_update", id + MODELSET_TASK ) else fm_user_model_update( id + MODELSET_TASK ) } } else if ( g_has_custom_model[id] ) { fm_reset_user_model( id ) } }
public fw_SetClientKeyValue( id, const infobuffer[], const key[] ) { if ( g_has_custom_model[id] && equal( key, "model" ) ) return FMRES_SUPERCEDE; return FMRES_IGNORED; }
public fw_ClientUserInfoChanged( id ) { if ( !g_has_custom_model[id] ) return FMRES_IGNORED; static currentmodel[32] fm_get_user_model( id, currentmodel, charsmax( currentmodel ) ) if ( !equal( currentmodel, g_player_model[id] ) && !task_exists( id + MODELSET_TASK ) ) fm_set_user_model( id + MODELSET_TASK ) return FMRES_IGNORED; }
public fm_user_model_update( taskid ) { static Float:current_time current_time = get_gametime() if ( current_time - g_models_targettime >= MODELCHANGE_DELAY ) { fm_set_user_model( taskid ) g_models_targettime = current_time } else { set_task( (g_models_targettime + MODELCHANGE_DELAY) - current_time, "fm_set_user_model", taskid ) g_models_targettime = g_models_targettime + MODELCHANGE_DELAY } }
public fm_set_user_model( player ) { player -= MODELSET_TASK engfunc( EngFunc_SetClientKeyValue, player, engfunc( EngFunc_GetInfoKeyBuffer, player ), "model", g_player_model[player] ) g_has_custom_model[player] = true }
public user_infected_post(player, infector) { if (get_user_team(player) == 1) { lamuerteexplosiva[player] = true client_print(player, print_chat, "[ZP] Explode after die!") } }
public user_humanized_post(player) { lamuerteexplosiva[player] = false }
public boomer_death() { new attacker = read_data(1) new victim = read_data(2) if(lamuerteexplosiva[victim]) {
static victim_name[33] static attacker_name[33] get_user_name(victim, victim_name, sizeof victim_name -1) get_user_name(attacker, attacker_name, sizeof attacker_name -1) user_kill(attacker) server_print("[ZP] %s was %s who die too !!!", victim_name, attacker_name) for (new id2; id2 <= g_maxplayers; id2++) { if (get_user_team(id2) == 1) { static Float:vOrigin[3], Float:vOrigin2[3] pev(victim, pev_origin, vOrigin) pev(id2, pev_origin, vOrigin2) new Float:fOrigin[3] new iOrigin[3] entity_get_vector(id2, EV_VEC_origin, fOrigin) FVecIVec(fOrigin,iOrigin)
{ message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(3) //TE_EXPLOSION write_coord(iOrigin[0]) write_coord(iOrigin[1]) write_coord(iOrigin[2] + 5) write_short(explosion) write_byte(30) write_byte(15) write_byte(0) message_end() }
{ message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(5) // TE_SMOkE write_coord(iOrigin[0]) // startorigin write_coord(iOrigin[1]) write_coord(iOrigin[2] + 15) write_short(smoke) // sprite write_byte(60) write_byte(10) message_end() } { message_begin( MSG_BROADCAST,SVC_TEMPENTITY,iOrigin ) write_byte( 21 ) //TE_BEAMCYLINDER write_coord( iOrigin[0] ) write_coord( iOrigin[1] ) write_coord( iOrigin[2] ) write_coord( iOrigin[0] ) write_coord( iOrigin[1] ) write_coord( iOrigin[2]+200 ) write_short( white ) write_byte( 0 ) write_byte( 1 ) write_byte( 6 ) write_byte( 8 ) write_byte( 1 ) write_byte( 255 ) write_byte( 255 ) write_byte( 192 ) write_byte( 128 ) write_byte( 5 ) message_end() } { emit_sound(victim,CHAN_STATIC, "g_sndExplode", 1.0, ATTN_NORM, 0, PITCH_NORM) } new g_hs new uWeaponName[32]
user_silentkill(id2) g_hs = random_num(0, 1) format(uWeaponName, 31, "grenade") make_deathmsg(0 , id2, g_hs, uWeaponName)
if(vector_distance(vOrigin, vOrigin2) < 250) { user_kill(id2) } } } lamuerteexplosiva[victim] = false } }
public client_disconnect(id) { lamuerteexplosiva[id] = false }
public client_putinserver(id) { lamuerteexplosiva[id] = false }
stock fm_get_user_model( player, model[], len ) { engfunc( EngFunc_InfoKeyValue, engfunc( EngFunc_GetInfoKeyBuffer, player ), "model", model, len ) }
stock fm_reset_user_model( player ) { g_has_custom_model[player] = false dllfunc( DLLFunc_ClientUserInfoChanged, player, engfunc( EngFunc_GetInfoKeyBuffer, player ) ) }
|