помогите доделать плагин

Тема в разделе "Программирование / Скриптинг", создана пользователем /_Parlament_\, 13 июл 2015.

  1. /_Parlament_\

    /_Parlament_\

    Сообщения:
    135
    Симпатии:
    7
    Добрый день, как сделать чтобы эффект сохранялся навсегда, и как сделать удаление
    PHP:
    #include <sourcemod> 
    #include <sdktools>

    public Plugin:myinfo =
    {
        
    name "Effects",
        
    description "Эффекты по карте",
        
    author "Parlament",
        
    version "1.0",
        
    url ""
    };

    public 
    OnPluginStart() 

        
    RegConsoleCmd("effect"effect); //Создаем команду для игрока


    public 
    OnMapStart() //Прекэшим спрайты и свечения

    }

    public 
    Action:effect(clientargs//Создаем меню

        new 
    Handle:class = CreatePanel(); 
        
    SetPanelTitle(class, "*Effects* \n \n"); //Главное название меню
        
    DrawPanelItem(class, "Spark"); //Пункт 1
        
    DrawPanelItem(class, "Пункт 2"); //Пункт 2
        
    DrawPanelItem(class, "Другое меню"); //Пункт 3 и тд
        
    SetPanelCurrentKey(class, 9); 
        
    DrawPanelItem(class, "Закрыть меню");    
        
    SendPanelToClient(class, clientInfoMenuHandlerMENU_TIME_FOREVER); 
        
    CloseHandle(class); 


    public 
    InfoMenuHandler(Handle:hMenuMenuAction:actionclientiSlot

        if(
    iSlot == 1)  //Проверяем игрока на какой пункт он нажал в данный момент 1 пункт
        

            
    Spark(client); //1 пункт
        
    }


    stock Spark(client
    {
        new 
    Float:cpos[3], Float:apos[3];
        new 
    Float:distFloat:epos[3];
      
        
    wS_GetLookPos(clientepos);
        
    GetClientEyeAngles(clientapos);
        new 
    String:MovelinearName[25];
        
    GetClientEyePosition(clientcpos);
      
        new 
    ent_move CreateEntityByName("func_movelinear"); //Создаем прямолинейное движение
        
    Format(MovelinearName,    25,            "mvlnr_%d",            ent_move); 
        
    DispatchKeyValue(ent_move,            "targetname",        MovelinearName); //Даем ему имя, чтобы прнивязать к нему наш шар
            
        
    DispatchKeyValueVector(ent_move,    "origin"cpos); //Создаем в точке головы
        
    DispatchKeyValueVector(ent_move,    "movedir"apos); //И направляем его движение в сторону, куда мы смотрим
        
    DispatchKeyValueFloat(ent_move,        "BlockDamage",        0.0); //Не блочится
        
    DispatchKeyValueFloat(ent_move,        "StartPosition",    0.0); 
        
    DispatchKeyValueFloat(ent_move,        "MoveDistance",        dist); //Делаем дистанцию движения равную расстоянию между точек
        
    SetEntPropFloat(ent_move,            Prop_Data,            "m_flSpeed",    500.0); // Задаем ему скорость (500 ед/сек)
        
    DispatchKeyValue(ent_move,            "spawnflags",        "8"); //Применяем скорость
        
    DispatchSpawn(ent_move); //Создаем движение
            
        
    new ent_fire CreateEntityByName("env_fire_trail"); //Вот тут уже создаем шар
        
    DispatchKeyValueVector(ent_fire,    "origin",            cpos); //Создаем в точке головы
        
    DispatchKeyValue(ent_fire,            "solid",            "0"); //Будет проходить через объектов
        
    DispatchSpawn(ent_fire); //Спавним наш шар.
        
    SetVariantString(MovelinearName); // Задаем привязку к другому объекту ("родителю"). В нашем случае объект прямолинейного движения
        
    AcceptEntityInput(ent_fire,            "SetParent");  //Применяем к нему родителя.
        
    AcceptEntityInput(ent_move,            "Start"); //Запускаем прямолинейное движение
        
    AcceptEntityInput(ent_move,            "Open");  //Задаем событие, когда шар дошел до нашей точки (прошел дистанцию)
    }    

    public 
    bool:wS_GetLookPos_Filter(entmaskany:client)  //Проверка, что игрок не смотрит сам на себя.

        return 
    client != ent
    }

    wS_GetLookPos(clientFloat:wS_Pos[3])  // Получение позиции прицела

        
    decl Float:EyePosition[3], Float:EyeAngles[3], Handle:h_trace
        
    GetClientEyePosition(clientEyePosition); 
        
    GetClientEyeAngles(clientEyeAngles); 
        
    h_trace TR_TraceRayFilterEx(EyePositionEyeAnglesMASK_SOLIDRayType_InfinitewS_GetLookPos_Filterclient); 
        
    TR_GetEndPosition(wS_Posh_trace); 
        
    CloseHandle(h_trace); 
    }

    Добавлено через 15 часов 38 минут
    ау
     
    Последнее редактирование: 13 июл 2015