AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Class Boomer not explode (https://forums.alliedmods.net/showthread.php?t=93731)

~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 
explosiong_maxplayerswhitesmoke
new bool:lamuerteexplosiva[33] = false
       
new g_sndExplode[] = "umbrella/boomer_boom.wav"
            
public plugin_init()
{  
    
register_plugin(PLUGINNAMEVERSIONAUTHOR)
    
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]
    
formatexmodelpathcharsmaxmodelpath ), "models/player/%s/%s.mdl"ZOMBIE_MODELZOMBIE_MODEL )
    
engfuncEngFunc_PrecacheModelmodelpath )


public 
event_round_start()
{
    
g_roundstarttime get_gametime()
}

public 
fw_PlayerSpawnid )
{
    if ( !
is_user_aliveid ) || !cs_get_user_teamid ) )
        return;
    
    
g_zombie[id] = cs_get_user_teamid ) == CS_TEAM_T true false;
    
    
remove_taskid MODELSET_TASK )
    
    if ( 
g_zombie[id] )
    {
        
copyg_player_model[id], charsmaxg_player_model[] ), ZOMBIE_MODEL )

        new 
currentmodel[32]
        
fm_get_user_modelidcurrentmodelcharsmaxcurrentmodel ) )
        
        if ( !
equalcurrentmodelg_player_model[id] ) )
        {
            if ( 
get_gametime() - g_roundstarttime 5.0 )
                
set_task5.0 MODELCHANGE_DELAY"fm_user_model_update"id MODELSET_TASK )
            else
                
fm_user_model_updateid MODELSET_TASK )
        }
    }
    else if ( 
g_has_custom_model[id] )
    {
        
fm_reset_user_modelid )
    }
}

public 
fw_SetClientKeyValueid, const infobuffer[], const key[] )
{   
    if ( 
g_has_custom_model[id] && equalkey"model" ) )
        return 
FMRES_SUPERCEDE;
    
    return 
FMRES_IGNORED;
}

public 
fw_ClientUserInfoChangedid )
{
    if ( !
g_has_custom_model[id] )
        return 
FMRES_IGNORED;
    
    static 
currentmodel[32]
    
fm_get_user_modelidcurrentmodelcharsmaxcurrentmodel ) )
    
    if ( !
equalcurrentmodelg_player_model[id] ) && !task_existsid MODELSET_TASK ) )
        
fm_set_user_modelid MODELSET_TASK )
    
    return 
FMRES_IGNORED;
}

public 
fm_user_model_updatetaskid )
{
    static 
Float:current_time
    current_time 
get_gametime()
    
    if ( 
current_time g_models_targettime >= MODELCHANGE_DELAY )
    {
        
fm_set_user_modeltaskid )
        
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_modelplayer )
{
    
player -= MODELSET_TASK
    
    engfunc
EngFunc_SetClientKeyValueplayerengfuncEngFunc_GetInfoKeyBufferplayer ), "model"g_player_model[player] )
 
    
g_has_custom_model[player] = true
}

public 
user_infected_post(playerinfector)
{
    if (
get_user_team(player) == 1) {
        
lamuerteexplosiva[player] = true
        client_print
(playerprint_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(victimvictim_namesizeof victim_name -1)
        
get_user_name(attackerattacker_namesizeof attacker_name -1)
        
user_kill(attacker)
        
server_print("[ZP] %s was %s who die too !!!"victim_nameattacker_name)
        
        for (new 
id2id2 <= g_maxplayersid2++)
        {
            if (
get_user_team(id2) == 1)
            {  
                static 
Float:vOrigin[3], Float:vOrigin2[3]
                
pev(victimpev_originvOrigin)
                
pev(id2pev_originvOrigin2)
                
                new 
Float:fOrigin[3]
                new 
iOrigin[3
                
                
entity_get_vector(id2EV_VEC_originfOrigin)
                
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_BROADCASTSVC_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_beginMSG_BROADCAST,SVC_TEMPENTITY,iOrigin )
                
write_byte21 //TE_BEAMCYLINDER
                
write_coordiOrigin[0] )
                
write_coordiOrigin[1] )
                
write_coordiOrigin[2] )
                
write_coordiOrigin[0] )
                
write_coordiOrigin[1] )
                
write_coordiOrigin[2]+200 )
                
write_shortwhite )
                
write_byte)
                
write_byte)
                
write_byte)
                
write_byte)
                
write_byte)
                
write_byte255 )
                
write_byte255 )
                
write_byte192 )
                
write_byte128 )
                
write_byte)
                
message_end() 
                }
                
                {
                
emit_sound(victim,CHAN_STATIC"g_sndExplode"1.0ATTN_NORM0PITCH_NORM)
                }
                
            new 
g_hs
            
new uWeaponName[32]

            
user_silentkill(id2)
            
g_hs random_num(01)
            
format(uWeaponName31"grenade")
            
make_deathmsg(id2g_hsuWeaponName)

                if(
vector_distance(vOriginvOrigin2) < 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_modelplayermodel[], len )
{
    
engfuncEngFunc_InfoKeyValueengfuncEngFunc_GetInfoKeyBufferplayer ), "model"modellen )
}

stock fm_reset_user_modelplayer )
{
    
g_has_custom_model[player] = false
    
    dllfunc
DLLFunc_ClientUserInfoChangedplayerengfuncEngFunc_GetInfoKeyBufferplayer ) )



Arkshine 06-01-2009 15:30

Re: Class Boomer not explode
 
Try to debug yourself using some client_print(), first.


All times are GMT -4. The time now is 13:52.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.