Привязать эффект огня к брошенной гранате

Тема в разделе "Программирование / Скриптинг", создана пользователем Колян, 8 окт 2016.

  1. Колян

    Колян

    Сообщения:
    109
    Симпатии:
    3
    Подскажите как лучше Привязать эффект огня к брошенной гранате? не хотелось бы создавать эффект и по таймеру его двигать к координате гранаты(
     
  2. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    В CS:S можно использовать сущность env_fire_trail, которая выглядит как трейл из огня. Чтобы прикрепить, необходимо вызвать input "SetParent" для гранаты. Вот код, который прикрепляет такой "хвост" к каждой брошенной гранате:
    PHP:
    public OnEntityCreated(iEntity, const String:sClassName[])
    {
        if ( 
    StrEqual(sClassName"hegrenade_projectile") )
        {
            new 
    iFireEntity CreateEntityByName("env_fire_trail");
            
    DispatchSpawn(iFireEntity);

            
    SetVariantString("!activator");
            
    AcceptEntityInput(iFireEntity"SetParent"iEntity);
        }
    }
     
  3. Крабос

    Крабос

    Сообщения:
    45
    Симпатии:
    21
    Еще можно так

    PHP:

    public void OnEntityCreated(int iEnt, const char[] classname)
    {
        if (
    StrEqual(classname"hegrenade_projectile"))
        {
            
    IgniteEntity(iEnt1.0);
        }
    }

    Если не сработает то так:
    PHP:
    public void OnEntityCreated(int iEnt, const char[] classname)
    {
        if (
    StrEqual(classname"hegrenade_projectile"))
        {
            
    CreateTimer(0.0OnGrndSpawniEnt);
        }
    }

    public 
    Action OnGrndSpawn(Handle hTimerany iHeEnt)
    {
        
    IgniteEntity(iHeEnt1.0);
    }
     
    White Wolf нравится это.
  4. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    Подскажите пожалуйста, трейл выстрела можно сделать огненным?
     
  5. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.189
    Симпатии:
    413
    А таймер там нафига? Не умеем свои ф-ции создавать? Там задержки нет.
     
  6. R1KO

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

    Сообщения:
    5.975
    Симпатии:
    2.981
    @White Wolf, если нужно проверять того кто бросал то нужен либо таймер либо SDKHook_SpawnPost
     
    White Wolf нравится это.
  7. Колян

    Колян

    Сообщения:
    109
    Симпатии:
    3
    а как в данном случае проверить кто бросил? получить индекс брошевшего гранату нужно..
     
  8. Крабос

    Крабос

    Сообщения:
    45
    Симпатии:
    21
    @Колян,
    PHP:
    public void OnEntityCreated(int iEnt, const char[] classname)
    {
        if (
    StrEqual(classname"hegrenade_projectile"))
        {
            
    CreateTimer(0.0OnGrndSpawniEnt);
        }
    }

    public 
    Action OnGrndSpawn(Handle hTimerany iHeEnt)
    {
        if (
    iHeEnt == -|| FindDataMapOffs(iHeEnt"m_hThrower") == -1) return;
       
        
    int iClient GetEntPropEnt(iHeEntProp_Data"m_hThrower");
    }
     
  9. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    Я читал на alliedmods что таймеры меньше 0.0 превращаются в 0.1
     
  10. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Оффтоп
     
  11. Колян

    Колян

    Сообщения:
    109
    Симпатии:
    3
    L 10/15/2016 - 09:45:55: [SM] Native "FindDataMapOffs" reported: Entity 418 (418) is invalid
    L 10/15/2016 - 09:45:55: [SM] Displaying call stack trace for plugin "Mod.smx":
    L 10/15/2016 - 09:45:55: [SM] [0] Line 113, C:\Users\Ya!\Desktop\pwn\sourcemod\scripting\/vish.sp::OnValidSpawn()
    L 10/15/2016 - 09:49:09: Error log file session closed.

    113 строка это - if (iHeEnt == -1 || FindDataMapOffs(iHeEnt, "m_hThrower") == -1) return; Как пофиксить? Нужен вариант чтоб на КСС и КСГО работал безотказно[
     
  12. Крабос

    Крабос

    Сообщения:
    45
    Симпатии:
    21
    фикс ксс
    PHP:
    public void OnEntityCreated(int iEnt, const char[] classname)
    {
        if (
    StrEqual(classname"hegrenade_projectile"))
        {
            
    CreateTimer(0.0OnGrndSpawniEnt);
        }
    }

    public 
    Action OnGrndSpawn(Handle hTimerany iHeEnt)
    {
        if (
    iHeEnt == -|| !IsValidEntity(iHeEnt) || FindDataMapOffs(iHeEnt"m_hThrower") == -1) return;
     
        
    int iClient GetEntPropEnt(iHeEntProp_Data"m_hThrower");
    }

    а вот так под кс го (не проверял)
    PHP:
    public void OnEntityCreated(int iEnt, const char[] classname)
    {
        if (
    StrEqual(classname"hegrenade_projectile"))
        {
            
    CreateTimer(0.0OnGrndSpawniEnt);
        }
    }

    public 
    Action OnGrndSpawn(Handle hTimerany iHeEnt)
    {
        if (
    iHeEnt == -|| !IsValidEntity(iHeEnt) || FindDataMapInfo(iHeEnt"m_hThrower") == -1) return;

        
    int iClient GetEntPropEnt(iHeEntProp_Data"m_hThrower");
    }
     
  13. AlmazON

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

    Сообщения:
    4.514
    Симпатии:
    1.967
    PHP:
    new client GetEntPropEnt(entityProp_Send"m_hOwnerEntity");
     
  14. Колян

    Колян

    Сообщения:
    109
    Симпатии:
    3
    2 одинаковых кода же... там тоже не кактит))) та же ошибка....
    --- Добавлено позже ---
    это для ксс и для ксго пойдет?
    --- Добавлено позже ---
    Ругается на эту сроку - if (iHeEnt == -1 || FindDataMapOffs(iHeEnt, "m_hThrower") == -1) а не на int iClient = GetEntPropEnt(iHeEnt, Prop_Data, "m_hThrower");
    --- Добавлено позже ---
    СТОП. Я не догоняю а зачем нам нужно вообще делать - FindDataMapOffs(iHeEnt, "m_hThrower") == -1 ??))) АХАХАХ индекс у нас есть... проериои на валидность и все)))
     
  15. Крабос

    Крабос

    Сообщения:
    45
    Симпатии:
    21
    Что бы не было ошибок при смене карты
    И я тебе добавил проверку на валидность, а ты код так и не поменял


    Там разница в FindDataMapOffs и FindDataMapInfo.
    Первое под sm < 1.8,второе выше
     
  16. AlmazON

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

    Сообщения:
    4.514
    Симпатии:
    1.967
    Начиная с версии SM 1.6.0-manual. Принципиальной разницы нет.
     
  17. Колян

    Колян

    Сообщения:
    109
    Симпатии:
    3
    Если не сделать - FindDataMapOffs(iHeEnt, "m_hThrower") то чем это может быть черевато - конкретно
     
  18. Крабос

    Крабос

    Сообщения:
    45
    Симпатии:
    21
    @Колян, ошибками в еррор логе при смене карты