AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Cluster Grenades (https://forums.alliedmods.net/showthread.php?t=204923)

fl0werD 01-04-2013 18:51

Cluster Grenades
 
1 Attachment(s)
Hello, I'm doing a cluster grenade. Help me. My code, I created entity cluster:
PHP Code:

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

new g_msgDeathMsg;

public 
plugin_init()
{
    
register_plugin("Cluster Grenade""1.0""fl0wer")

    
register_touch("grenade_cluster""*""Forward__Touch_Pre")
    
register_forward(FM_SetModel"Forward__SetModel_Pre")

    
RegisterHam(Ham_Think"grenade""CBaseGrenade__Think_Pre")

    
g_msgDeathMsg get_user_msgid("DeathMsg");
}

public 
Forward__Touch_Pre(pEntity)
{
    if(!
pev_valid(pEntity))
        return;

    new 
Float:vecOrigin[3], pExpEntity;
    
pev(pEntitypev_originvecOrigin)

    static 
iszAllocStringCached;
    if(
iszAllocStringCached || (iszAllocStringCached engfunc(EngFunc_AllocString"env_explosion")))
    {
        if(
pev_valid((pExpEntity engfunc(EngFunc_CreateNamedEntityiszAllocStringCached))))
        {
            
set_pev(pExpEntitypev_originvecOrigin)
            
set_pev(pExpEntitypev_spawnflagsSF_ENVEXPLOSION_NODAMAGE)

            
DispatchKeyValue(pExpEntity"iMagnitude""080")
            
DispatchSpawn(pExpEntity)

            
force_use(pExpEntitypExpEntity)
        }
    }

    static 
pevVictim;
    
pevVictim FM_NULLENT;

    new 
Float:flDamageFloat:vecVictimOrigin[3];
    new 
pevOwner pev(pEntitypev_owner);

    while((
pevVictim engfunc(EngFunc_FindEntityInSpherepevVictimvecOrigin240.0)))
    {
        if(!(
<= pevVictim <= 32 && is_user_alive(pevVictim)))
            continue;

        if(
get_pdata_int(pevVictim114) == get_pdata_int(pevOwner114))
            continue;

        
pev(pevVictimpev_originvecVictimOrigin)

        if((
flDamage 80.0 * (1.0 - (get_distance_f(vecVictimOriginvecOrigin) / 240.0))) <= pev(pevVictimpev_health))
            
ExecuteHamB(Ham_TakeDamagepevVictimpEntitypevOwnerflDamageDMG_BLAST)
        else
        {
            
set_msg_block(g_msgDeathMsgBLOCK_SET)
            
ExecuteHamB(Ham_KilledpevVictimpevOwner0)
            
set_msg_block(g_msgDeathMsgBLOCK_NOT)

            
message_begin(MSG_ALLg_msgDeathMsg)
            
write_byte(pevOwner)
            
write_byte(pevVictim)
            
write_byte(0)
            
write_string("grenade")
            
message_end()
        }
    }

    
engfunc(EngFunc_RemoveEntitypEntity)
}

public 
Forward__SetModel_Pre(pEntityszModel[])
{
    if(
strlen(szModel) < 8)
        return;

    if(
szModel[7] != 'w' || szModel[8] != '_' || szModel[9] != 'h' || szModel[10] != 'e')
        return;

    static 
Float:flDmgTime;
    
pev(pEntitypev_dmgtimeflDmgTime)

    if(
flDmgTime == 0.0)
        return;

    
set_pev(pEntitypev_flTimeStepSound1111)
}

public 
CBaseGrenade__Think_Pre(pEntity)
{
    if(!
pev_valid(pEntity))
        return;

    static 
Float:flDmgTime;
    
pev(pEntitypev_dmgtimeflDmgTime)

    if(
flDmgTime get_gametime())
        return;

    if(
pev(pEntitypev_flTimeStepSound) != 1111)
        return;

    new 
Float:vecOrigin[3], pGrenade;
    
pev(pEntitypev_originvecOrigin)

    static 
iszAllocStringCached;

    for(new 
04i++)
    {
        if(
iszAllocStringCached || (iszAllocStringCached engfunc(EngFunc_AllocString"info_target")))
            
pGrenade engfunc(EngFunc_CreateNamedEntityiszAllocStringCached);

        if(!
pev_valid(pGrenade))
            continue;

        
set_pev(pGrenadepev_classname"grenade_cluster"
        
set_pev(pGrenadepev_movetypeMOVETYPE_TOSS)
        
set_pev(pGrenadepev_solidSOLID_TRIGGER)
        
set_pev(pGrenadepev_ownerpev(pEntitypev_owner))
        
set_pev(pGrenadepev_originvecOrigin)

        
engfunc(EngFunc_SetSizepGrenadeFloat:{ 0.00.00.0 }, Float:{ 0.00.00.0 })
        
engfunc(EngFunc_SetModelpGrenade"models/grenade.mdl")
    }


I'm having difficulty with this scheme:


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

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