Отловить момент взрыва гранаты

Тема в разделе "Программирование / Скриптинг", создана пользователем pokypka20, 20 июл 2014.

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Помогите составить код, при взрыве гранаты чтобы выполнялось условие.
    Если можно примером, заранее всем спасибо.
     
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.994
    Симпатии:
    2.990
    HookEvent("hegrenade_detonate", ...
     
    pokypka20 нравится это.
  3. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Не могу понять где взять кординаты при взрыве гранаты чтобы прикрепить код?

    PHP:
    #pragma semicolon 1

    #include <sourcemod>
    #include <sdktools_functions>
    #include <sdktools_engine>
    #include <sdktools_trace>
    #include <sdktools_tempents>
    #include <sdktools_tempents_stocks>
    #include <sdktools>
    #include <cstrike>
    #include <sdkhooks>

    new Handle:g_hHEGrenadesHandle:mp_restartgame;

    public 
    OnPluginStart()
    {
        
    mp_restartgame FindConVar("mp_restartgame");
        
    HookConVarChange(mp_restartgameClearAdtArray);
        
        
    g_hHEGrenades CreateArray();
        
        
    HookEvent("hegrenade_detonate"Event_HEGrenadeDetonate);
        
    HookEvent("round_start"Event_RoundStart);
    }

    public 
    OnMapEnd()
    {
        
    ClearArray(g_hHEGrenades);
    }

    public 
    Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    ClearArray(g_hHEGrenades);
    }

    public 
    ClearAdtArray(Handle:convar, const String:oldValue[], const String:newValue[])
    {
        
    ClearArray(g_hHEGrenades);
    }

    public 
    Event_HEGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    Float:fOrigin[3], Float:fOriginHE[3];
        
    fOrigin[0] = GetEventFloat(event"x");
        
    fOrigin[1] = GetEventFloat(event"y");
        
    fOrigin[2] = GetEventFloat(event"z");
        
        new 
    iSize GetArraySize(g_hHEGrenades);
        
        if(
    iSize 0)
        {
            new 
    Handle:hGrenadeiGrenade;
            
            for(new 
    i=0i<iSizei++)
            {
                
    hGrenade GetArrayCell(g_hHEGrenadesi);
                
    iGrenade GetArrayCell(hGrenade0);
                if(
    IsValidEdict(iGrenade))
                {
                    
    GetEntPropVector(iGrenadeProp_Send"m_vecOrigin"fOriginHE);
                    
                    if(
    fOrigin[0] == fOriginHE[0] && fOrigin[1] == fOriginHE[1] && fOrigin[2] == fOriginHE[2] && (GetArraySize(hGrenade) > 1))
                    {
                        new 
    particle GetArrayCell(hGrenade1);
                        if(
    IsValidEdict(particle))
                        {
                            
    AcceptEntityInput(particle"TurnOff");
                            
    AcceptEntityInput(particle"Kill");
                            break;
                        }
                    }
                }
            }
        }
    }

    public 
    OnEntityCreated(entity, const String:classname[])
    {
        if(
    StrEqual(classname"hegrenade_projectile"false))
            
    SDKHook(entitySDKHook_SpawnHook_OnSpawnProjectile);
    }

    public 
    Hook_OnSpawnProjectile(entity)
    {
        new 
    particle CreateEntityByName("env_smokestack");
        if(
    IsValidEdict(particle))
        {
            
    decl String:Name[32], Float:fPos[3];
            
    Format(Namesizeof(Name), "SmokeParticle_%i"entity);
            
    GetEntPropVector(entityProp_Send"m_vecOrigin"fPos);
            new 
    Float:fAng[3] = {0.00.00.0};
            
    DispatchKeyValueVector(particle"Origin"fPos);
            
    DispatchKeyValueVector(particle"Angles"fAng);
            
    DispatchKeyValueFloat(particle"BaseSpread"2.0);
            
    DispatchKeyValueFloat(particle"StartSize"1.0);
            
    DispatchKeyValueFloat(particle"EndSize"2.2);
            
    DispatchKeyValueFloat(particle"Twist"0.0);
            
    DispatchKeyValue(particle"Name"Name);
            
    DispatchKeyValue(particle"SmokeMaterial""particle/fire.vmt");
            
    DispatchKeyValue(particle"RenderColor""255 0 0");
            
    DispatchKeyValue(particle"SpreadSpeed""10");
            
    DispatchKeyValue(particle"RenderAmt""300");
            
    DispatchKeyValue(particle"JetLength""13");
            
    DispatchKeyValue(particle"RenderMode""0");
            
    DispatchKeyValue(particle"Initial""0");
            
    DispatchKeyValue(particle"Speed""10");
            
    DispatchKeyValue(particle"Rate""173");
            
    DispatchSpawn(particle);
            
            
    SetVariantString("!activator");
            
    AcceptEntityInput(particle"SetParent"entityparticle0);
            
    AcceptEntityInput(particle"TurnOn");
            
            new 
    Handle:hGrenade CreateArray();
            
    PushArrayCell(hGrenadeentity);
            
    PushArrayCell(hGrenadeparticle);
            
    PushArrayCell(g_hHEGrenadeshGrenade);
        }
        else
            
    LogError("Failed to create env_smokestack!");
    }
    Нужно добавить этот эфект при взрыве гранаты, помоги встроить в плагин.

    PHP:
     new tesla CreateEntityByName("point_tesla");  //Он делается с помощью создания entity объекта "point_tesla"
             
    DispatchKeyValue(tesla"m_flRadius""100.0");  // Радиус 100 единиц
             
    DispatchKeyValue(tesla"m_SoundName""DoSpark");  //Звук искр
             
    DispatchKeyValue(tesla"beamcount_min""42");  // Минимальное Количество всплесков
             
    DispatchKeyValue(tesla"beamcount_max""62");  //Максимальное
             
    DispatchKeyValue(tesla"texture""sprites/physbeam.vmt");  // Текстура спрайта
             
    DispatchKeyValue(tesla"m_Color""255 255 255");  //Цвет
             
    DispatchKeyValue(tesla"thick_min""10.0");  
             
    DispatchKeyValue(tesla"thick_max""11.0"); 
             
    DispatchKeyValue(tesla"lifetime_min""0.3"); //Минимальное время жизни
             
    DispatchKeyValue(tesla"lifetime_max""0.3");  //Максимальное время жизни
             
    DispatchKeyValue(tesla"interval_min""0.1"); 
             
    DispatchKeyValue(tesla"interval_max""0.2"); 
                  
             
    DispatchSpawn(tesla); //Спавним наш "point_tesla"
             
    TeleportEntity(teslafPos1NULL_VECTORNULL_VECTOR); //И телепортируем на позицию прицела
     
                  
             
    AcceptEntityInput(tesla"TurnOn"); 
             
    AcceptEntityInput(tesla"DoSpark");
    У меня получалось встроить, но он либо не работает либо возрождается вместе с трейлом.
     
    san911 нравится это.
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.994
    Симпатии:
    2.990
    PHP:
    public Event_HEGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    Float:fOrigin[3], Float:fOriginHE[3];
        
    fOrigin[0] = GetEventFloat(event"x");
        
    fOrigin[1] = GetEventFloat(event"y");
        
    fOrigin[2] = GetEventFloat(event"z");

     new 
    tesla CreateEntityByName("point_tesla");  //Он делается с помощью создания entity объекта "point_tesla"
             
    DispatchKeyValue(tesla"m_flRadius""100.0");  // Радиус 100 единиц
             
    DispatchKeyValue(tesla"m_SoundName""DoSpark");  //Звук искр
             
    DispatchKeyValue(tesla"beamcount_min""42");  // Минимальное Количество всплесков
             
    DispatchKeyValue(tesla"beamcount_max""62");  //Максимальное
             
    DispatchKeyValue(tesla"texture""sprites/physbeam.vmt");  // Текстура спрайта
             
    DispatchKeyValue(tesla"m_Color""255 255 255");  //Цвет
             
    DispatchKeyValue(tesla"thick_min""10.0");  
             
    DispatchKeyValue(tesla"thick_max""11.0"); 
             
    DispatchKeyValue(tesla"lifetime_min""0.3"); //Минимальное время жизни
             
    DispatchKeyValue(tesla"lifetime_max""0.3");  //Максимальное время жизни
             
    DispatchKeyValue(tesla"interval_min""0.1"); 
             
    DispatchKeyValue(tesla"interval_max""0.2"); 
                  
             
    DispatchSpawn(tesla); //Спавним наш "point_tesla"
             
    TeleportEntity(teslafOriginNULL_VECTORNULL_VECTOR); //И телепортируем на позицию прицела
     
                  
             
    AcceptEntityInput(tesla"TurnOn"); 
             
    AcceptEntityInput(tesla"DoSpark"); 
        
        new 
    iSize GetArraySize(g_hHEGrenades);
        
        if(
    iSize 0)
        {
            new 
    Handle:hGrenadeiGrenade;
            
            for(new 
    i=0i<iSizei++)
            {
                
    hGrenade GetArrayCell(g_hHEGrenadesi);
                
    iGrenade GetArrayCell(hGrenade0);
                if(
    IsValidEdict(iGrenade))
                {
                    
    GetEntPropVector(iGrenadeProp_Send"m_vecOrigin"fOriginHE);
                    
                    if(
    fOrigin[0] == fOriginHE[0] && fOrigin[1] == fOriginHE[1] && fOrigin[2] == fOriginHE[2] && (GetArraySize(hGrenade) > 1))
                    {
                        new 
    particle GetArrayCell(hGrenade1);
                        if(
    IsValidEdict(particle))
                        {
                            
    AcceptEntityInput(particle"TurnOff");
                            
    AcceptEntityInput(particle"Kill");
                            break;
                        }
                    }
                }
            }
        }
    }
     
    san911 и pokypka20 нравится это.
  5. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Спасибо за помощь.