Output срабатывает 2 раза

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Приветствую всех.

Имеется код:

PHP:
    int iEntity = CreateEntityByName("trigger_multiple");
    if (iEntity != -1)
    {
        DispatchKeyValueVector(iEntity, "origin", view_as<float>({4076.0, 5909.0, 0.0}));
        DispatchKeyValue(iEntity, "SpawnFlags", "15");
        DispatchKeyValue(iEntity, "StartDisabled", "0");
        SetEntityModel(iEntity, DEFAULT_MODEL);
       
        DispatchSpawn(iEntity);
       
        ActivateEntity(iEntity);
       
        SetEntPropVector(iEntity, Prop_Send, "m_vecMins", view_as<float>({-10000.0, -10000.0, 0.0}));
        SetEntPropVector(iEntity, Prop_Send, "m_vecMaxs", view_as<float>({10000.0, 10000.0, 5300.0}));
       
        SetEntProp(iEntity, Prop_Send, "m_nSolidType", 2);
       
        int iEntityEffect = GetEntProp(iEntity, Prop_Send, "m_fEffects");
        iEntityEffect |= 32;
        SetEntProp(iEntity, Prop_Send, "m_fEffects", iEntityEffect);

        HookSingleEntityOutput(iEntity, "OnStartTouch", EntityHandler_OnTriggerOutput);
    }

public void EntityHandler_OnTriggerOutput(const char[] szOutput, int iCaller, int iActivator, float flDelay)
{
 if (iActivator > 0 && iActivator <= MaxClients && !g_bRoundEnd && GetEntProp(iActivator, Prop_Send, "m_zombieClass") == ZOMBIE_CHARGER && g_bChargerCarryStart)
 {
 PrintToChatAll("%s %t", PLUGIN_PREFIX, "Announce KarmaCharge", g_szAttackerName, g_szVictimName);
 PlaySound();
 CreateSlowTimer();
 }
}

Вопрос: Почему Output OnStartTouch срабатывает дважды ?
Хотя на Wiki написано что он работает как trigger_once
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Все обычно используют SdkHooks, и там по-идее срабатывает только один раз.
ЗЫ: там нигде не сказано, что он работает как trigger_once. Это скорее наследуемые от класса TriggerOnce аутпуты. С .fgd не знаком?
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
@gibs,
PHP:
TriggerOnce:

OnStartTouch Fired when an entity starts touching this trigger. The touching entity must pass this triggers filters to cause this output to fire. (activator is the toucher)
OnTrigger Fired whenever the trigger is activated. (activator is the activator)
OnUser1 to OnUser4 These Outputs each fire in response to the firing of the like-numbered
FireUser1 to FireUser4 Input; see User Inputs and Outputs.
OnKilled  
(New with Left 4 Dead)
This Output fires when the entity is killed and removed from the game.
написали для самих себя ?
--- Добавлено позже ---
Допустим знаком с FGD
--- Добавлено позже ---
Нашел причину. Но проблема теперь в другом. Почему то оказывается в Event'e round_start entity создается два раза ...
PHP:
    g_bRoundEnd = false;
   
    int iEntity = CreateEntityByName("trigger_multiple");

    PrintToServer("TEST CREATE TRIGGER !!!!");
    DispatchKeyValueVector(iEntity, "origin", view_as<float>({4076.0, 5909.0, 5300.0}));
    DispatchKeyValue(iEntity, "spawnflags", "15");
    DispatchKeyValue(iEntity, "StartDisabled", "0");
    DispatchKeyValue(iEntity, "AllowIncap", "0");
    DispatchKeyValue(iEntity, "AllowGhost", "0");
    DispatchKeyValue(iEntity, "Wait", "3");
    SetEntityModel(iEntity, DEFAULT_MODEL);
   
    DispatchSpawn(iEntity);
   
    ActivateEntity(iEntity);
   
    SetEntPropVector(iEntity, Prop_Send, "m_vecMins", view_as<float>({-10000.0, -10000.0, 0.0}));
    SetEntPropVector(iEntity, Prop_Send, "m_vecMaxs", view_as<float>({10000.0, 10000.0, 1.0}));
   
    SetEntProp(iEntity, Prop_Send, "m_nSolidType", 2);
   
    int iEntityEffect = GetEntProp(iEntity, Prop_Send, "m_fEffects");
    iEntityEffect |= 32;
    SetEntProp(iEntity, Prop_Send, "m_fEffects", iEntityEffect);

    HookSingleEntityOutput(iEntity, "OnTrigger", EntityHandler_OnTriggerOutput);
--- Добавлено позже ---
Проблема была в том, что я по невнимательности указал HookEvent в событии OnMapStart()
 
Последнее редактирование:
Сверху Снизу