[CS:GO]Эффект искр

Тема в разделе "Запросы", создана пользователем ToniWaor, 26 июл 2016.

  1. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    Зашел на сервак увидел эффект искр при попаданий пуль, оказалось что это плагин myjb ну и захотел такой эффект себе на сервер, но т.к. myjb мне не нужен решил вырезать часть кода с этим эффектом оттуда и засунуть в модуль випки от рико.

    PHP:
    #pragma semicolon 1
    #include <sourcemod>
    #include <sdktools>
    #include <vip_core>

    public Plugin:myinfo =
    {
        
    name "[VIP] Electro Effects",
        
    author "R1KO",
        
    version "1.0.2"
    };

    new const 
    String:g_sFeature[] = "ElectroEffects";

    public 
    OnPluginStart()
    {
        
    HookEvent("player_death"Event_OnPlayerDeath);
        
    HookEvent("bullet_impact"Event_OnBulletImpact);
    }

    public 
    VIP_OnVIPLoaded()
    {
        
    VIP_RegisterFeature(g_sFeatureBOOL);
    }

    public 
    Event_OnBulletImpact(Handle:hEvent, const String:name[], bool:silent)
    {
        new 
    iClient GetClientOfUserId(GetEventInt(hEvent"userid"));
        if(
    iClient && VIP_IsClientVIP(iClient) && VIP_IsClientFeatureUse(iClientg_sFeature))
        {
            
    decl Float:fPos[3];
            
    fPos[0] = GetEventFloat(hEvent"x");
            
    fPos[1] = GetEventFloat(hEvent"y");
            
    fPos[2] = GetEventFloat(hEvent"z");

            
    Func_EnergySplash(fPos);
        }
    }

    public 
    Event_OnPlayerDeath(Handle:hEvent, const String:name[], bool:silent)
    {
        new 
    iAttacker GetClientOfUserId(GetEventInt(hEvent"attacker")),
            
    iClient GetClientOfUserId(GetEventInt(hEvent"userid"));

        if(
    iAttacker && iClient && iAttacker != iClient && VIP_IsClientVIP(iAttacker) && VIP_IsClientFeatureUse(iAttackerg_sFeature))
        {
            
    decl Float:fPos[3];
            
    GetClientAbsOrigin(iClientfPos);
            
    Func_Sparks(fPos);
        }
    }

    Func_EnergySplash(Float:fPos[3])
    {
        
    decl Float:fEndPos[3];
        
    fEndPos[0] = fPos[0] + 500;
        
    fEndPos[1] = fPos[1] - 500;
        
    fEndPos[2] = fPos[2] + 1000;

        
    TE_SetupSparks(fPosfEndPos2500500);
        
    TE_SendToAll();
    }

    Func_Sparks(const Float:fPos[3])
    {
        new 
    iSparks CreateEntityByName("env_spark");
        
    DispatchKeyValue(iSparks"beamcount_min""20");
        
    DispatchKeyValue(iSparks"beamcount_max""30");
        
    DispatchKeyValue(iSparks"lifetime_min""1.0");
        
    DispatchKeyValue(iSparks"lifetime_max""2.0");
        
    DispatchKeyValue(iSparks"m_flRadius""500.0");
        
    DispatchKeyValue(iSparks"m_SoundName""DoSpark");
        
    DispatchKeyValue(iSparks"texture""particle/sparks/sparks.vmt");
        
    DispatchKeyValue(iSparks"m_Color""255 0 0");
        
    DispatchKeyValue(iSparks"thick_min""15.0");
        
    DispatchKeyValue(iSparks"thick_max""25.0");
        
    DispatchKeyValue(iSparks"interval_min""1.2");
        
    DispatchKeyValue(iSparks"interval_max""2.4");

        
    DispatchSpawn(iSparks);
        
    TeleportEntity(iSparksfPosNULL_VECTORNULL_VECTOR);
        
    AcceptEntityInput(iSparks"TurnOn");
        
    AcceptEntityInput(iSparks"DoSpark");
    }

    Вот как я хотел бы что бы это было.

    [​IMG]
    [​IMG]

    Как получилось в итоге

    [​IMG] [​IMG]

    Как видно в оригинале они разлетаются в стороны, а у меня якорем в низ... не могли бы вы помочь ?
     
    Последнее редактирование: 26 июл 2016
  2. Андрей71

    Андрей71

    Сообщения:
    179
    Симпатии:
    11
    мне кажется было бы неплохо вообще сделать отдельный модуль на эту тему
     
  3. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    вот что я понял из того плагина


    PHP:
    decl Float:fEndPos[3];
        
    fEndPos[0] = fPos[0] + 500;
        
    fEndPos[1] = fPos[1] - 500;
        
    fEndPos[2] = fPos[2] + 1000;
    тут должен быть рандом но как его реализовать я не знаю.

    PHP:
    // get random numbers for the x and y starting positions
        
    int randomx GetRandomInt(-500500);
        
    int randomy GetRandomInt(-500500);

        
    // define where the lightning strike starts
        
    float startpos[3];
        
    startpos[0] = clientpos[0] + randomx;
        
    startpos[1] = clientpos[1] + randomy;
        
    startpos[2] = clientpos[2] + 800;
    Так в оригинале, пробовал перенести, не вышло.
     
  4. 8Ahnenerbe8

    8Ahnenerbe8

    Сообщения:
    102
    Симпатии:
    11
    @ToniWaor, исходник бы прикрепил для начала
     
  5. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    код не влазил, по этому не прикрепил.

    Та часть кода, как мне кажется начинается с 2879 строки, вооот.
     

    Вложения:

    • warden.sp
      Размер файла:
      117,5 КБ
      Просмотров:
      7
  6. R1KO

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

    Сообщения:
    5.980
    Симпатии:
    2.983
    PHP:
    float randomx GetRandomFloat(-500.0500.0);
    float randomy GetRandomFloat(-500500);
     
  7. teran

    teran

    Сообщения:
    95
    Симпатии:
    8
    Я думаю, лучше засунуть "Искры" в модуль "Electro Effects" для випки от Рико. Чтобы можно было выбрать либо молнии, либо искры.
     
  8. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    Понятно, но как бы это засунуть что бы скомпилилось ?
     
  9. Drumanid

    Drumanid Дилетант

    Сообщения:
    567
    Симпатии:
    194
    PHP:
    /*
        Based on this plugins :
        Admin Smite 2.1 : https://forums.alliedmods.net/showthread.php?p=1086127
        Tracer Effects v 1.2.8 : https://forums.alliedmods.net/showthread.php?t=142046
    */

    #pragma semicolon 1

    #include <sourcemod>
    #include <sdktools>

    #define SOUND "ambient/explosions/explode_9.wav"

    int g_SmokeSprite;
    int g_LightningSprite;

    Handle Cvar_Enabled null;
    Handle Cvar_Sound null;
    Handle Cvar_Beam null;
    Handle Cvar_Sparks null;
    Handle Cvar_EnergySplash null;
    Handle Cvar_Smoke null;

    int Enabled;
    int Sound;
    int Beam;
    int Sparks;
    int EnergySplash;
    int Smoke;

    public 
    Plugin myinfo 
    {
        
    name "AWP Zeus lightning bullets",
        
    author "Hipster/Panduh (AlliedMods: thetwistedpanda)/TheBadTurtle(kupah)",
        
    description "AWP OF ZEUS!!!!",
        
    version "1.0",
        
    url "https://forums.alliedmods.net/showthread.php?t=279827"
    };

    public 
    void OnPluginStart() {
        
    HookEvent("bullet_impact"BulletImpact);

        
    Cvar_Enabled CreateConVar("AWP_lightning_bullets_enable""1""Enables/disables lightning bullets");
        
    Enabled GetConVarInt(Cvar_Enabled);
       
        
    Cvar_Sound CreateConVar("AWP_lightning_bullets_sound""1""Enable/disable lightning bullets explode sound");
        
    Sound GetConVarInt(Cvar_Sound);
       
        
    Cvar_Beam CreateConVar("AWP_lightning_bullets_beam""1""Enable/disable lightning bullets beam");
        
    Beam GetConVarInt(Cvar_Beam);
       
        
    Cvar_Sparks CreateConVar("AWP_lightning_bullets_sparks""1""Enable/disable lightning bullets sparks");
        
    Sparks GetConVarInt(Cvar_Sparks);
       
        
    Cvar_EnergySplash CreateConVar("AWP_lightning_bullets_energy_splash""1""Enable/disable lightning bullets energy splash");
        
    EnergySplash GetConVarInt(Cvar_EnergySplash);
       
        
    Cvar_Smoke CreateConVar("AWP_lightning_bullets_smoke""1""Enable/disable lightning bullets smoke");
        
    Smoke GetConVarInt(Cvar_Smoke);
       
        
    HookConVarChange(Cvar_EnabledOnCvarChange);
        
    HookConVarChange(Cvar_SoundOnCvarChange);
        
    HookConVarChange(Cvar_BeamOnCvarChange);
        
    HookConVarChange(Cvar_SparksOnCvarChange);
        
    HookConVarChange(Cvar_EnergySplashOnCvarChange);
        
    HookConVarChange(Cvar_SmokeOnCvarChange);
       
        
    AutoExecConfig(true"AWP_lightning_bullets");
    }

    public 
    OnCvarChange(Handle:cvar, const String:oldvalue[], const String:newvalue[])
    {
        if(
    cvar == Cvar_Enabled)
            
    Enabled StringToInt(newvalue);
        if(
    cvar == Cvar_Sound)
            
    Sound StringToInt(newvalue);
        if(
    cvar == Cvar_Beam)
            
    Beam StringToInt(newvalue);
        if(
    cvar == Cvar_Sparks)
            
    Sparks StringToInt(newvalue);
        if(
    cvar == Cvar_EnergySplash)
            
    EnergySplash StringToInt(newvalue);
        if(
    cvar == Cvar_Smoke)
            
    Smoke StringToInt(newvalue);
    }

    public 
    void OnMapStart() {
        
    PrecacheSound(SOUNDtrue);
        
    g_SmokeSprite PrecacheModel("sprites/steam1.vmt");
        
    g_LightningSprite PrecacheModel("sprites/lgtning.vmt");
    }

    public 
    int BulletImpact(Handle:event,const String:name[],bool:dontBroadcast) {
        if(
    Enabled == 1) {
            
    int client GetClientOfUserId(GetEventInt(event"userid"));
           
            
    char weaponname[64];
            
    GetClientWeapon(clientweaponnamesizeof(weaponname));
               
            if (
    StrEqual(weaponname"weapon_awp")) {
                
    float fPosition[3];
                
    float fImpact[3];
                
    float fDifference[3];
                   
                
    GetClientEyePosition(clientfPosition);
                
    fImpact[0] = GetEventFloat(event"x");
                
    fImpact[1] = GetEventFloat(event"y");
                
    fImpact[2] = GetEventFloat(event"z");
               
                
    float fDistance GetVectorDistance(fPositionfImpact);
                
    float fPercent = (0.4 / (fDistance 100.0));
               
                
    fDifference[0] = fPosition[0] + ((fImpact[0] - fPosition[0]) * fPercent);
                
    fDifference[1] = fPosition[1] + ((fImpact[1] - fPosition[1]) * fPercent) - 0.08;
                
    fDifference[2] = fPosition[2] + ((fImpact[2] - fPosition[2]) * fPercent);
                   
                
    int color[4] =  { 255255255255 };
                   
                
    float dir[3] = {0.00.00.0};
                   
                if(
    Beam == 1) {
                    
    TE_SetupBeamPoints(fDifferencefImpactg_LightningSprite0000.220.010.001.0color3);
                    
    TE_SendToAll();
                }
                if(
    Sparks == 1) {
                    
    TE_SetupSparks(fImpactdir50001000);
                    
    TE_SendToAll();
                }
                if(
    EnergySplash == 1) {
                    
    TE_SetupEnergySplash(fImpactdirfalse);
                    
    TE_SendToAll();
                }
                if(
    Smoke == 1) {
                    
    TE_SetupSmoke(fImpactg_SmokeSprite5.010);
                    
    TE_SendToAll();
                }
                   
                if(
    Sound == 1)
                    
    EmitAmbientSound(SOUNDfImpactclientSNDLEVEL_RAIDSIREN);
            }
        }
    }
     
  10. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    Если бы мне это что-то дало, совсем не смыслю в скриптах.
     
  11. September

    September

    Сообщения:
    1.183
    Симпатии:
    163
     

    Вложения:

    • awp_ef.smx
      Размер файла:
      7,3 КБ
      Просмотров:
      9
  12. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    Спасибо, скомпилровать я бы не осилил...
    Я просил что бы помогли добавить эффект в модуль випки, а не отдельный плагин. Понятно бы было если бы я шарил(вырезал бы нужные куски и всунул), но я не шарю :ab:
    --- Добавлено позже ---
    Кто-нибудь ? :unknw:
     
    Последнее редактирование: 1 авг 2016
  13. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    Это замени на:
     
    Последнее редактирование: 27 авг 2016
    Святослав124 нравится это.
  14. ToniWaor

    ToniWaor

    Сообщения:
    77
    Симпатии:
    9
    [​IMG]
    Спасибо все работает. :)
     
  15. AzOne

    AzOne

    Сообщения:
    9
    Симпатии:
    0
    Я не очень понял всё написанное, но возможно ли сделать это отдельным плагином для sourcemod`а?
     
  16. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    PHP:
    #pragma semicolon 1
    #include <sourcemod>
    #include <sdktools>

    #pragma newdecls required

    public Plugin myinfo =
    {
        
    name "Electro Effects",
        
    author "R1KO & AlmazON",
        
    version "1.0.2NotVip",
        
    url "http://hlmod.ru"
    };

    public 
    void OnPluginStart()
    {
        
    HookEvent("player_death"Event_OnPlayerDeath);
        
    HookEvent("bullet_impact"Event_OnBulletImpact);
    }

    public 
    void Event_OnBulletImpact(Event event, const char[] namebool silent)
    {
        static 
    float fPos[3];
        
    fPos[0] = event.GetFloat("x");
        
    fPos[1] = event.GetFloat("y");
        
    fPos[2] = event.GetFloat("z");
        
    Func_EnergySplash(fPos);
    }

    public 
    void Event_OnPlayerDeath(Event event, const char[] namebool silent)
    {
        
    int iAttacker GetClientOfUserId(event.GetInt("attacker"));
        if(
    iAttacker)
        {
            
    int iClient GetClientOfUserId(event.GetInt("userid"));
            if(
    iAttacker != iClient)
            {
                
    float fPos[3];
                
    GetClientAbsOrigin(iClientfPos);
                
    Func_Sparks(fPos);
            }
        }
    }

    void Func_EnergySplash(const float fPos[3])
    {
        
    TE_SetupSparks(fPosview_as<float>({0.00.00.0}), 50001000);
        
    TE_SendToAll();
    }

    void Func_Sparks(const float fPos[3])
    {
        
    int iSparks CreateEntityByName("env_spark");
        
    DispatchKeyValue(iSparks"beamcount_min""20");
        
    DispatchKeyValue(iSparks"beamcount_max""30");
        
    DispatchKeyValue(iSparks"lifetime_min""1.0");
        
    DispatchKeyValue(iSparks"lifetime_max""2.0");
        
    DispatchKeyValue(iSparks"m_flRadius""500.0");
        
    DispatchKeyValue(iSparks"m_SoundName""DoSpark");
        
    DispatchKeyValue(iSparks"texture""particle/sparks/sparks.vmt");
        
    DispatchKeyValue(iSparks"m_Color""255 0 0");
        
    DispatchKeyValue(iSparks"thick_min""15.0");
        
    DispatchKeyValue(iSparks"thick_max""25.0");
        
    DispatchKeyValue(iSparks"interval_min""1.2");
        
    DispatchKeyValue(iSparks"interval_max""2.4");

        
    DispatchSpawn(iSparks);
        
    TeleportEntity(iSparksfPosNULL_VECTORNULL_VECTOR);
        
    AcceptEntityInput(iSparks"TurnOn");
        
    AcceptEntityInput(iSparks"DoSpark");
    }
     
    Святослав124 и AzOne нравится это.
  17. AzOne

    AzOne

    Сообщения:
    9
    Симпатии:
    0
    А можно готовые smx\sp файлы?
    Спасибо.
    --- Добавлено позже ---
    спасибо, разобрался
    --- Добавлено позже ---
    А можно его переписать, что бы искры летели только с "пули" зевса?
     
    Последнее редактирование: 27 авг 2016
  18. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    PHP:
    #pragma semicolon 1
    #include <sourcemod>
    #include <sdktools>

    #pragma newdecls required

    public Plugin myinfo =
    {
        
    name "Electro Effects - Zeus",
        
    author "R1KO & AlmazON",
        
    version "1.0.2NotVip",
        
    url "http://hlmod.ru"
    };

    public 
    void OnPluginStart()
    {
        
    HookEvent("player_death"Event_OnPlayerDeath);
        
    HookEvent("bullet_impact"Event_OnBulletImpact);
    }

    public 
    void Event_OnBulletImpact(Event event, const char[] namebool silent)
    {
        static 
    char weapon[14];
        
    GetClientWeapon(GetClientOfUserId(event.GetInt("userid")), weaponsizeof(weapon));
        if(
    strcmp(weapon"weapon_taser") == 0)
        {
            static 
    float fPos[3];
            
    fPos[0] = event.GetFloat("x");
            
    fPos[1] = event.GetFloat("y");
            
    fPos[2] = event.GetFloat("z");
            
    Func_EnergySplash(fPos);
        }
    }

    public 
    void Event_OnPlayerDeath(Event event, const char[] namebool silent)
    {
        
    int iAttacker GetClientOfUserId(event.GetInt("attacker"));
        if(
    iAttacker)
        {
            
    int iClient GetClientOfUserId(event.GetInt("userid"));
            if(
    iAttacker != iClient)
            {
                
    float fPos[3];
                
    GetClientAbsOrigin(iClientfPos);
                
    Func_Sparks(fPos);
            }
        }
    }

    void Func_EnergySplash(const float fPos[3])
    {
        
    TE_SetupSparks(fPosview_as<float>({0.00.00.0}), 50001000);
        
    TE_SendToAll();
    }

    void Func_Sparks(const float fPos[3])
    {
        
    int iSparks CreateEntityByName("env_spark");
        
    DispatchKeyValue(iSparks"beamcount_min""20");
        
    DispatchKeyValue(iSparks"beamcount_max""30");
        
    DispatchKeyValue(iSparks"lifetime_min""1.0");
        
    DispatchKeyValue(iSparks"lifetime_max""2.0");
        
    DispatchKeyValue(iSparks"m_flRadius""500.0");
        
    DispatchKeyValue(iSparks"m_SoundName""DoSpark");
        
    DispatchKeyValue(iSparks"texture""particle/sparks/sparks.vmt");
        
    DispatchKeyValue(iSparks"m_Color""255 0 0");
        
    DispatchKeyValue(iSparks"thick_min""15.0");
        
    DispatchKeyValue(iSparks"thick_max""25.0");
        
    DispatchKeyValue(iSparks"interval_min""1.2");
        
    DispatchKeyValue(iSparks"interval_max""2.4");

        
    DispatchSpawn(iSparks);
        
    TeleportEntity(iSparksfPosNULL_VECTORNULL_VECTOR);
        
    AcceptEntityInput(iSparks"TurnOn");
        
    AcceptEntityInput(iSparks"DoSpark");
    }
    При убийстве - для любого оружия.
     
    Святослав124 нравится это.
  19. Ice_Sochi

    Ice_Sochi

    Сообщения:
    87
    Симпатии:
    22
    Данный код на ксс будет работать?
     
  20. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    Оффтоп
     
    Святослав124 нравится это.