Оптимизация в [HATS] SDKHook_SetTransmit, ShouldHide

SHAREN

Servers-Info.Ru
Сообщения
232
Реакции
32
PHP:
Equip(client)
{     // одеть на клиента шапку
........
   int iEnt = CreateEntityByName("prop_dynamic_override");
   DispatchSpawn(iEnt);  
   AcceptEntityInput(iEnt, "TurnOn", iEnt, iEnt, 0);
  
   SetEntPropEnt(iEnt, Prop_Send, "m_hOwnerEntity", client);
   SDKHook(iEnt, SDKHook_SetTransmit, ShouldHide);
........
}


public Action ShouldHide(int iEnt, int client)
{  
    int iOwner = GetEntPropEnt(iEnt, Prop_Send, "m_hOwnerEntity"); // получаем игрока с шапкой iEnt
    if (iOwner == client)
        return Plugin_Handled;        // чтобы от 1 лица client не видел iEnt
  
    return Plugin_Continue;
}


PHP:
int g_iOwner[4096]           // кстати сколько MAXENTS должно быть, 4096?
Equip(client)
{     // одеть на клиента шапку
........
   int iEnt = CreateEntityByName("prop_dynamic_override");
   DispatchSpawn(iEnt);  
   AcceptEntityInput(iEnt, "TurnOn", iEnt, iEnt, 0);
  
   SetEntPropEnt(iEnt, Prop_Send, "m_hOwnerEntity", client);
   SDKHook(iEnt, SDKHook_SetTransmit, ShouldHide);

   g_iOwner[iEnt] = client;   // записываем кто хозяин iEnt (после смерти и т.п. будет сбрасываться)
........
}


public Action ShouldHide(int iEnt, int client) // выполняется каждый фрейм для каждого игрока т.е. tikrate*players в секунду для каждого iEnt
{
    if (g_iOwner[iEnt] == client)
        return Plugin_Handled;        // чтобы от 1 лица client не видел iEnt
  
    return Plugin_Continue;
}


И у меня вопрос какой из вариантов будет работать более быстро? И может ещё какие советы дадите
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
g_iOwner[iEnt] = client; // записываем кто хозяин iEnt (после смерти и т.п. будет сбрасываться)
........
}


public
Action ShouldHide(int iEnt, int client) // выполняется каждый фрейм для каждого игрока т.е. tikrate*players в секунду для каждого iEnt
{
if (
g_iOwner[iEnt] == client)
return
Plugin_Handled; // чтобы от 1 лица client не видел iEnt

return Plugin_Continue;
}
А не проще наоборот:
PHP:
g_iOwner[client] = iEnt;   // записываем кто хозяин iEnt (после смерти и т.п. будет сбрасываться)


public Action ShouldHide(int iEnt, int client) // выполняется каждый фрейм для каждого игрока т.е. tikrate*players в секунду для каждого iEnt
{
    return g_iOwner[client] == iEnt ? Plugin_Handled : Plugin_Continue;        // чтобы от 1 лица client не видел iEnt
}
Так тратится памяти, как для любого обычного плагина. Единственное, что рассчитано на 1 предмет, но и 2 шапки никто не надевает.
 
Сверху Снизу