데드링어와 가짜죽음


저번에 적었던 킬 피드 아이콘 바꾸기에서 설명을 하지 않았던 부분이 있어 이번 글에서 조금 더 자세히 들어가 볼 생각이다.

적었던 코드에서 언급할 부분은 CreateKillStreak 함수 내의 이것인데..

stock void CreateKillStreak(int attacker, int target, const char[] name, int streak)
{
    // ...

    for(int client = 1; client <= MaxClients; client++)
    {
        if(!IsClientInGame(client) || target == client)
            continue;

        streakEvent.FireToClient(client);
    }
    delete streakEvent;
}

player_death 이벤트의 가짜 죽음에 해당하는 본인은 제외해야 했을까?

예전에 경험했던 가짜 죽음과 관련된 버그로 인해 서버에 들어와서 처음 스폰된 유저가 데드링어를 사용하고 가짜 죽음을 발동시키면 플레이어가 즉사하는 버그가 있었다.

비슷한 사례로 킬스트릭 효과 연출을 위한 가짜 죽음에도 똑같은 현상이 발생되었는데 원인을 살펴 확인하니 클라이언트 코드에서 이벤트 처리를 제대로 하지 못해 가짜 죽음을 무시하는 현상이 발생하는 것으로 확인되어 아예 서버와 사망자 본인을 제외한 그 외의 클라이언트에게만 Broadcast하여 현상을 회피할 수 있었다.

이 현상 외에도 데드링어에 몇 가지 유의할 것이 있다.

  • 사용자의 병과가 스파이여야 한다.

    우클릭을 통한 병과별 스킬 사용을 통해 은폐 시계를 사용하므로 없으면 우클릭에 아무런 반응을 할 수 없다.
  • 같이 드는 무기가 스파이가 사용하는 무기여야 한다.

    tf_weapon_revolver, tf_weapon_builder, tf_weapon_sapper, tf_weapon_knife가 이에 해당된다.
    이 무기들이 아닌 무기를 들 경우에 데드링어를 들 순 있지만 사용자의 조작해도 효과가 발동하여 은폐 게이지가 모두 닳지 않는 한, 시계를 내릴 수 없다.
,

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다