Eventy są ok, tylko po raz kolejny za bardzo opierasz się na moim niedokończonym kodzie, w którym nie zostały rozwiązane pewne sprawy, między innymi właśnie zasady odtwarzania dźwięków. Po zalogowaniu danej sieci trzeba przez jakiś czas (powiedzmy 5 sekund) olewać eventy o stanie kontaktów (tak się robiło np. w Tlenie, żeby nie wyświetlać miliona powiadomień po zalogowaniu). Takich baboli w moim kodzie jest więcej (miały być priorytety dla dźwięków, że gdy odgrywa się dźwięk jednego typu, np. "zalogowano do sieci", to nie są odgrywane inne, o niższym priorytecie, np. "ktoś stał się dostępny", albo gdy dany dźwięk dopiero zaczął się odgrywać, żeby nie zaczynał się następny itp., itd., miałem kilka pomysłów), bo to była wersja "coś już działa i można tego nawet używać, jeśli ma się wystarczająco cierpliwości i przmknie oko na niektóre niedoróbki" ;) Więc tu nie API wina. API wszystkiego za Ciebie nie zrobi. A jeśli komunikator będzie decydował co odtwarzać, a czego nie, to równie dobrze Kaworu mógłby zamiast udostępniać API do dźwięków dopisać PlaySound() w kilku miejscach i wtyczka byłaby niepotrzebna :P Tobie mogą te eventy po zalogowaniu do sieci nie być potrzebne, ale ktoś inny może chcieć je w przyszłości wykorzystać do czegoś innego (chociażby zbierania statystyk - to, że event ma w nazwie "sound" nie znaczy, że nie może być użyty jako źródło informacji z dźwiękami nie powiązanych) i będzie konflikt interesów ;)
Przy okazji (bo pojawiła się taka kwestia w temacie): tlenowa wtyczka korzystała ze starszej wersji Bassa, a nawet dwóch różnych wersji, więc to nie miało prawa działać ;)