Проблемы с SDKHook_SetTransmit

Rolzzandik

Участник
Сообщения
492
Реакции
234
Собственно делаю плагин для 1v1 арены от сплевиса.
Необходимо, чтобы на игроках на одной арене друг для друга висели флаги FL_EDICT_ALWAYS.
C-подобный:
public void Multi1v1_OnRoundTypeDecided(int arena, int player1, int player2, int& roundType){
    bVisible[player1][player2] = true;
    bVisible[player2][player1] = true;
    SDKHook(player1, SDKHook_SetTransmit, Hook_SetTransmit);
    SDKHook(player2, SDKHook_SetTransmit, Hook_SetTransmit);
}
public Action Hook_SetTransmit(int entity, int client){
    if (entity == client) return Plugin_Continue;
    if(bVisible[client][entity]){
           SetEdictFlags(entity, (GetEdictFlags(entity) ^ FL_EDICT_ALWAYS));
           return Plugin_Continue;
      }   
    return Plugin_Handled;
}
Однако этот кусок кода не работает. Ну как не работает. Скорее всего - как повезет. Если на ентити были флаги FL_EDICT_PVSCHECK, то оно работает.
Насколько я понял по слитым исходникам, SetTransmit вызывается не всегда, из-за этого флаги не ставятся.
Какой еще есть способ поставить нужные флаги? Если придется использовать функции ксго, которых нету в SM, то это не проблема, сигнатуры/индексы могу найти.

Памагите пжлст(
 

Rolzzandik

Участник
Сообщения
492
Реакции
234
«^» заменил на «|»?
Да.
К счастью гуглить уметь: Побитовые операторы в C++: И, ИЛИ, НЕ и исключающее ИЛИ
Сообщения автоматически склеены:

«^» заменил на «|»?
Тут скорее прикол именно в том, что сам сенттрасмит не всегда вызывается(в самой игре), из-за чего флаги просто-напросто не проставляются.
 
Сверху Снизу