Партикли код.

Jafa

Участник
Сообщения
159
Реакции
3
Всем привет, дайте пожалуйста примитивный пример кода использования партиклей. Спасибо.
--- Добавлено позже ---
PHP:
public OnPluginStart()
{
    RegConsoleCmd("sm_test", Command_Test);
}

public Action:Command_Test(iClient, iArgc)
{
    new iParticle = CreateEntityByName("info_particle_system");

    new Float:vOrigin[3];
    GetEntPropVector(iClient, Prop_Send, "m_vecOrigin", vOrigin);

    TeleportEntity(iParticle, vOrigin, NULL_VECTOR, NULL_VECTOR);
    DispatchKeyValue(iParticle, "effect_name", "water_splash_02_animated");
    DispatchSpawn(iParticle);

    ActivateEntity(iParticle);
    AcceptEntityInput(iParticle, "Start");
    CreateTimer(3.0, stop_effect, EntIndexToEntRef(iParticle));
  
    // прикрепление партикля к клиенту
    decl String:sTargetName[32];
    FormatEx(sTargetName, sizeof(sTargetName), "client%d", iClient);
    DispatchKeyValue(iClient, "targetname", sTargetName);
    SetVariantString(sTargetName);
    AcceptEntityInput(iParticle, "SetParent");
    // конец прикрепления партикля
  
    return Plugin_Handled;
}


public Action:stop_effect(Handle:timer, any:iParticleRef)
{
    new iParticle = EntRefToEntIndex(iParticleRef);
    if (iParticle > MaxClients)
    {
        AcceptEntityInput(iParticle, "Stop");
        AcceptEntityInput(iParticle, "Kill");
    }
}

кому нужно, сори что тему создал. Скажите а нужно кешировать модели партиклей? если я возьму кастомные партикли - ихнадо кешировать? и как?
 
Последнее редактирование:

Kaptain

Школьник
Сообщения
912
Реакции
489
Думаю никто не даст такой код. Здесь он в супер секретности и только в привате. За распространение - расстрел!
 

Jafa

Участник
Сообщения
159
Реакции
3
Попробовал этот код - эффекта вовсе не увидел.. что я делаю не так?
 

Kaptain

Школьник
Сообщения
912
Реакции
489
Попробовал этот код - эффекта вовсе не увидел.. что я делаю не так?
Не могу сказать. Я не кодер.
На оленях был такой код, который выводит по позиции прицела.
C-подобный:
#pragma semicolon 1

#define DEBUG

#define PLUGIN_AUTHOR "Rachnus"
#define PLUGIN_VERSION "1.00"

#include <sourcemod>
#include <sdktools>
#include <cstrike>
//#include <sdkhooks>

#pragma newdecls required

KeyValues g_kvParticles;
int g_iParticleSystem[MAXPLAYERS + 1] = {INVALID_ENT_REFERENCE, ...};
char g_cClientSection[MAXPLAYERS + 1][PLATFORM_MAX_PATH];
bool g_bParentToggle[MAXPLAYERS + 1];

public Plugin myinfo =
{
    name = "CS:GO Particles",
    author = PLUGIN_AUTHOR,
    description = "Display CS:GO particles",
    version = PLUGIN_VERSION,
    url = "http://rachnus.blogspot.fi/"
   
};

public void OnPluginStart()
{   
    for (int i = 0; i <= MAXPLAYERS; i++)
    {
        g_iParticleSystem[i] = INVALID_ENT_REFERENCE;
        g_bParentToggle[i] = false;
    }
   
    char path[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, path, sizeof(path), "configs/csgoparticles_configs.txt");
    g_kvParticles = new KeyValues("particles");
   
    if(!g_kvParticles.ImportFromFile(path))
        SetFailState("Could not open %s", path);
   
    RegAdminCmd("sm_particlemenu", Command_ParticleMenu, ADMFLAG_GENERIC, "Displays a menu of all CS:GO particles");
    RegAdminCmd("sm_pm", Command_ParticleMenu, ADMFLAG_GENERIC, "Displays a menu of all CS:GO particles");
    RegAdminCmd("sm_delparticle", Command_DelParticle, ADMFLAG_GENERIC, "Deletes clients particle system");
    RegAdminCmd("sm_toggleparent", Command_ToggleParent, ADMFLAG_GENERIC, "If toggled, particle effect will follow player, if not it will be created infront of players head");
}

bool CreateParticle(int client, char []particle)
{
    int ent = EntRefToEntIndex(g_iParticleSystem[client]);
       
    if(ent && ent != INVALID_ENT_REFERENCE)
    {
        AcceptEntityInput(ent, "Stop");
        AcceptEntityInput(ent, "Kill");
       
    }
   
    ent = CreateEntityByName("info_particle_system");
   
    float particleOrigin[3];
   
    if(g_bParentToggle[client])
        GetClientAbsOrigin(client, particleOrigin);
    else
        GetClientEyePosition(client, particleOrigin);

    DispatchKeyValue(ent , "start_active", "0");
    DispatchKeyValue(ent, "effect_name", particle);
    DispatchSpawn(ent);
   
    TeleportEntity(ent , particleOrigin, NULL_VECTOR,NULL_VECTOR);
   
   
    if(g_bParentToggle[client])
    {
        SetVariantString("!activator");
        AcceptEntityInput(ent, "SetParent", client, ent, 0);
    }
   
    ActivateEntity(ent);
    AcceptEntityInput(ent, "Start");
   
    g_iParticleSystem[client] = EntIndexToEntRef(ent);
    PrintToChat(client, " \x04[CS:GO Particles] \x01Particle system created (\x03'%s'\x01)!", particle);

    return true;
}

public Action Command_ToggleParent(int client, int args)
{
    if(g_bParentToggle[client])
    {
        g_bParentToggle[client] = false;
        PrintToChat(client, " \x04[CS:GO Particles] \x01Particle effects are no longer parented!");
    }
    else
    {
        g_bParentToggle[client] = true;
        PrintToChat(client, " \x04[CS:GO Particles] \x01Particle effects are now parented!");
    }
    return Plugin_Handled;
}

public Action Command_DelParticle(int client, int args)
{
    if(args < 1)
    {
        int ent = EntRefToEntIndex(g_iParticleSystem[client]);
       
        if(ent && ent != INVALID_ENT_REFERENCE)
        {
            AcceptEntityInput(ent, "Stop");
            AcceptEntityInput(ent, "Kill");
           
            PrintToChat(client, " \x04[CS:GO Particles] \x01Particle system deleted!");
        }
        else
            PrintToChat(client, " \x04[CS:GO Particles] \x01You have not spawned a particle!");
       
        g_iParticleSystem[client] = INVALID_ENT_REFERENCE;
    }
    else
        ReplyToCommand(client, " \x04[CS:GO Particles] \x01Usage: sm_delparticle");
       
    return Plugin_Handled;
}

public int PCFMenuHandler(Menu menu, MenuAction action, int param1, int param2)
{
    char info[PLATFORM_MAX_PATH];
    GetMenuItem(menu, param2, info, sizeof(info));
   
    if(action == MenuAction_Select)
    {
        g_kvParticles.Rewind();
       
        if(g_kvParticles.JumpToKey(info))
        {
            if(g_kvParticles.GotoFirstSubKey())
            {
                char particleName[PLATFORM_MAX_PATH];
                Format(g_cClientSection[param1], PLATFORM_MAX_PATH, "%s", info);
                Menu menuParticles = new Menu(ParticlesMenuHandler);
                char menuTitle[PLATFORM_MAX_PATH];
                Format(menuTitle, sizeof(menuTitle), "%s particles", g_cClientSection[param1]);
                menuParticles.SetTitle(menuTitle);
               
                do
                {
                    g_kvParticles.GetString("name", particleName, sizeof(particleName));
                    menuParticles.AddItem(particleName, particleName);
   
                } while (g_kvParticles.GotoNextKey());
               
                menuParticles.ExitBackButton = true;
                menuParticles.ExitButton = true;
                menuParticles.Display(param1, MENU_TIME_FOREVER);
            }
        }
        g_kvParticles.Rewind();   
    }
   
    if(action == MenuAction_End)
    {
        if(menu != INVALID_HANDLE)
            delete menu;
    }
}

public int ParticlesMenuHandler(Menu menu, MenuAction action, int param1, int param2)
{
    char info[PLATFORM_MAX_PATH];
    GetMenuItem(menu, param2, info, sizeof(info));
    if(action == MenuAction_Select)
    {
        CreateParticle(param1, info);
       
        g_kvParticles.Rewind();
       
        if(g_kvParticles.JumpToKey(g_cClientSection[param1]))
        {
            if(g_kvParticles.GotoFirstSubKey())
            {
               
                char particleName[PLATFORM_MAX_PATH];
               
                Menu menuParticles = new Menu(ParticlesMenuHandler);
                char menuTitle[PLATFORM_MAX_PATH];
               
                Format(menuTitle, sizeof(menuTitle), "%s particles", g_cClientSection[param1]);
               
                menuParticles.SetTitle(menuTitle);
                do
                {
                    g_kvParticles.GetString("name", particleName, sizeof(particleName));
                    menuParticles.AddItem(particleName, particleName);

                } while (g_kvParticles.GotoNextKey());
               
                menuParticles.ExitBackButton = true;
                menuParticles.ExitButton = true;
                menuParticles.DisplayAt(param1, GetMenuSelectionPosition(), MENU_TIME_FOREVER);
            }
        }
        g_kvParticles.Rewind();   
    }
    else if(param2 == MenuCancel_ExitBack)
    {
        Command_ParticleMenu(param1, 0);
    }
   
    if(action == MenuAction_End)
    {
        if(menu != INVALID_HANDLE)
            delete menu;
    }
}

public Action Command_ParticleMenu(int client, int args)
{
    char sectionName[PLATFORM_MAX_PATH];
   
    Menu menu = new Menu(PCFMenuHandler);
    menu.SetTitle("Particle files (.pcf)");
   
    g_kvParticles.Rewind();
   
    if(g_kvParticles.GotoFirstSubKey())
    {
        do
        {
            g_kvParticles.GetSectionName(sectionName, sizeof(sectionName));
            menu.AddItem(sectionName, sectionName);

        } while (g_kvParticles.GotoNextKey());
    }
    else
        ReplyToCommand(client, " \x04[CS:GO Particles] \x01No keyvalues not found!");
       
    g_kvParticles.Rewind();
    menu.ExitButton = true;
    menu.Display(client, MENU_TIME_FOREVER);
   
    return Plugin_Handled;
}

public void OnClientDisconnect(int client)
{
    if(IsValidEntity(g_iParticleSystem[client]))
        AcceptEntityInput(g_iParticleSystem[client], "Kill");
   
    g_bParentToggle[client] = false;
    g_cClientSection[client] = "";
    g_iParticleSystem[client] = INVALID_ENT_REFERENCE;
}
 

Jafa

Участник
Сообщения
159
Реакции
3
Думаю никто не даст такой код. Здесь он в супер секретности и только в привате. За распространение - расстрел!
Я слышал что продают сами партикли,но то чтоб код - не слышал..

Партикль - обьект состоящий из частиц движение которых задает сама модель партикля, с помощью кода можно смещать "центр" партикля и заставлять двигаться куда надо... получается уменьшить густоту партикля нельзя? или заставить частицы партикля двигать в другом направлении? - я правильно вообще это понимаю?
 

Kaptain

Школьник
Сообщения
912
Реакции
489
Я слышал что продают сами партикли,но то чтоб код - не слышал..

Партикль - обьект состоящий из частиц движение которых задает сама модель партикля, с помощью кода можно смещать "центр" партикля и заставлять двигаться куда надо... получается уменьшить густоту партикля нельзя? или заставить частицы партикля двигать в другом направлении? - я правильно вообще это понимаю?
Продают модуль для випки.
получается уменьшить густоту партикля нельзя? или заставить частицы партикля двигать в другом направлении?
Скорее всего через сам партикл, нежели через код
 

Jafa

Участник
Сообщения
159
Реакции
3
PHP:
 "blood_impact.pcf"
    {
        "blood_impact_basic"
        {
            "name"    "blood_impact_basic"
        }
        "blood_impact_basic_fallback"
        {
            "name"    "blood_impact_basic_fallback"
        }
        ....
}
получается есть сам партикл - blood_impact.pcf и внутри его содержатся различные эфекты этого партикля.. (т.е различные варианты его проявления\движения\эффекта и т д...) как имея партикль BLA-BLA-BLA.pcf вытащить из его эфекты этого партикля?
--- Добавлено позже ---
И если я куплю у кого-то партикли (не стандартные) чтоб прицепить - то мне его нужно будет добавлять в загрузку игрокам? AddFileToDownloadsTable(".../BLA-BLA-BLA.pcf");
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #9

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Думаю никто не даст такой код. Здесь он в супер секретности и только в привате. За распространение - расстрел!
Поржал :D

@Jafa, ты мог бы посмотреть исходники плагинов, в которых используются партикли.

PHP:
//=== OnMapStart() === загрузка клиенту и прекэш.
    AddFileToDownloadsTable("particles/example_particle.pcf");
    PrecacheGeneric("particles/example_particle.pcf", true);
//================= создание энтити партикля в точке var_pos
    int ent = CreateEntityByName("info_particle_system");     
    DispatchKeyValue(ent, "effect_name", "example_particle_sysname");
    DispatchKeyValue(ent, "angles", "0 0 0");
    DispatchSpawn(ent);
    ActivateEntity(ent);
    AcceptEntityInput(ent, "Start");
    TeleportEntity(ent, var_pos, NULL_VECTOR, NULL_VECTOR);
 
Последнее редактирование:

Jafa

Участник
Сообщения
159
Реакции
3
PHP:
luch.pcf

ent = CreateEntityByName("info_particle_system");
   
    float particleOrigin[3];
    GetClientAbsOrigin(client, particleOrigin);


    DispatchKeyValue(ent , "start_active", "0");
    DispatchKeyValue(ent, "effect_name", "luch_ef");
    DispatchSpawn(ent);
   
    TeleportEntity(ent , particleOrigin, NULL_VECTOR,NULL_VECTOR);
   
   
    if(g_bParentToggle[client])
    {
        SetVariantString("!activator");
        AcceptEntityInput(ent, "SetParent", client, ent, 0);
    }
   
    ActivateEntity(ent);
    AcceptEntityInput(ent, "Start");

Всем привет, создаю партикль, он срабатывает, но эффект луча идет к точке 0,0,0 на карте. Подскажите пожалуйста как заставить идти луч к конечной точке моего прицела. т.е от позиции где я стою к мету куда установлен прицел. Спасибо. Очень надеюсь на поддержку ведущих скриптеров.
 
Сверху Снизу