Какой таск лучше использовать?

Сообщения
658
Реакции
230
Помог
11 раз(а)
имеется три варианта использование реализация информера

1.
Код:
public client_putinserver(pId)
{
    set_task_ex(1.0, "main_informer", pId+TASK_SHOW_INFORMER, _,_, SetTask_Repeat);
}

public main_informer(pId)
{
    pId -= TASK_SHOW_INFORMER;
    
    set_hudmessage(255, 255, 0, 0.7, 0.05, 0, 0.0, 1.1, 0.2, 0.2, -1);
    ShowSyncHudMsg(pId, g_iSyncMainInformer, "%s", Code );
}

public client_disconnected(pId)
{
    remove_task(pId+TASK_SHOW_INFORMER);
    
}
2.
Код:
public plugin_init()
{
    new iEnt = rg_create_entity("info_target", true);
    SetThink(iEnt, "main_informer");
    set_entvar(iEnt, var_nextthink, get_gametime() + 1.0);
}

public main_informer(iEnt)
{
    static iPlayers[MAX_PLAYERS], iPlayerCount;
    get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead);


    for(new i, iPlayer; i < iPlayerCount; i++)
    {
        iPlayer = iPlayers[i];
        
        set_hudmessage(255, 255, 0, 0.7, 0.05, 0, 0.0, 1.1, 0.2, 0.2, -1);
        ShowSyncHudMsg(iPlayer, g_iSyncMainInformer, "%s", Code );
        
    }
    set_entvar(iEnt, var_nextthink, get_gametime() + 1.0);
}
3.
Код:
public plugin_init()
{
    set_task_ex(1.0, "main_informer",TASK_SHOW_INFORMER, _,_, SetTask_Repeat);
}

public main_informer()
{
    static iPlayers[MAX_PLAYERS], iPlayerCount;
    get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead);

    for(new i, iPlayer; i < iPlayerCount; i++)
    {
        iPlayer = iPlayers[i];
        
        set_hudmessage(255, 255, 0, 0.7, 0.05, 0, 0.0, 1.1, 0.2, 0.2, -1);
        ShowSyncHudMsg(iPlayer, g_iSyncMainInformer, "%s", Code );
        
    }
}

Прошу посодействовать и сказать какой лучше использовать и "легче" обрабатывается
 
Сообщения
658
Реакции
230
Помог
11 раз(а)
BlackSignature, я так понял 2ой отпадает..ок.спс

тогда такой вопрос, 1 и 3 нет никакой разницы? что использовать.
 
Сообщения
1,177
Реакции
2,144
Помог
57 раз(а)
Limbooc, Лучше 1 таск на всех, если нет конкретной необходимости держать по таску на каждого игрока.
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
Любая энтити = нагрузка. Как минимум, всякие фуллпаки и чеквизиблы долбятся по энтитям без разбора.

Самый оптимальный вариант - 3, ибо get_players_ex выполняется на уровне амхмодх с минимальной нагрузкой.
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
3.
C++:
public plugin_init()
{
set_task_ex(1.0, "main_informer",TASK_SHOW_INFORMER, _,_, SetTask_Repeat);
}

public main_informer()
{
static iPlayers[MAX_PLAYERS], iPlayerCount;
get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead);

for(new i, iPlayer; i < iPlayerCount; i++)
{
iPlayer = iPlayers[i];

set_hudmessage(255, 255, 0, 0.7, 0.05, 0, 0.0, 1.1, 0.2, 0.2, -1);
ShowSyncHudMsg(iPlayer, g_iSyncMainInformer, "%s", Code );

}
}
Код:
public plugin_init()
{
    set_task_ex(1.0, "main_informer", TASK_SHOW_INFORMER, .flags = SetTask_Repeat);
}

public main_informer()
{
    static iPlayers[MAX_PLAYERS], iPlayerCount;
    get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead);

    for(new i; i < iPlayerCount; i++)
    {
        set_hudmessage(255, 255, 0, 0.7, 0.05, 0, 0.0, 1.1, 0.2, 0.2, -1);
        ShowSyncHudMsg(iPlayers[i], g_iSyncMainInformer, "%s", Code);
    }
}
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Код:
public plugin_init()
{
    set_task_ex(1.0, "main_informer", TASK_SHOW_INFORMER, .flags = SetTask_Repeat);
}

public main_informer()
{
    static iPlayers[MAX_PLAYERS], iPlayerCount;
    get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead);
    set_hudmessage(255, 255, 0, 0.7, 0.05, 0, 0.0, 1.1, 0.2, 0.2, -1);
    for(new i; i < iPlayerCount; i++)
    {
        ShowSyncHudMsg(iPlayers[i], g_iSyncMainInformer, "%s", Code);
    }
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу