Rolzzandik
Участник
- Сообщения
- 492
- Реакции
- 234
Собственно делаю плагин для 1v1 арены от сплевиса.
Необходимо, чтобы на игроках на одной арене друг для друга висели флаги FL_EDICT_ALWAYS.
Однако этот кусок кода не работает. Ну как не работает. Скорее всего - как повезет. Если на ентити были флаги FL_EDICT_PVSCHECK, то оно работает.
Насколько я понял по слитым исходникам, SetTransmit вызывается не всегда, из-за этого флаги не ставятся.
Какой еще есть способ поставить нужные флаги? Если придется использовать функции ксго, которых нету в SM, то это не проблема, сигнатуры/индексы могу найти.
Памагите пжлст(
Необходимо, чтобы на игроках на одной арене друг для друга висели флаги 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;
}
Насколько я понял по слитым исходникам, SetTransmit вызывается не всегда, из-за этого флаги не ставятся.
Какой еще есть способ поставить нужные флаги? Если придется использовать функции ксго, которых нету в SM, то это не проблема, сигнатуры/индексы могу найти.
Памагите пжлст(