Trzeci parametr funkcji ExecuteHamB winien przyjąć identyfikator bytu zadającego obrażenia.
W zależności od jego klasy, zostanie nadany odpowiedni komunikat w DeathMsg.
Klasa bytu musi być rozpoznawalna przez silnik gry, inaczej DeathMsg się nie wykona.
Klasą może być dowolna broń, np. weapon_m4a1, weapon_c4 czy weapon_smokegrenade,
jak i klasy świata silnika HLDS, jak np. worldspawn, player, item_kevlar, czy info_target.
Ikona będzie czytana z plików u graczy, więc ze strony serwera raczej nic nie zdziałasz.
przedrostek weapon_ jest pomijany przy message, a to właśnie jego będziesz zapewne chciał użyć, by uzyskać wybraną ikonkę broni.
Ostatecznie, wyświetlana jest graczowi ikona o nazwie z przedrostkiem d_, pełną listę znajdziesz tutaj: doktor.haze.free.fr/counter-strike/sprites_screens/index.php
Jeśli jednak takowej ikony nie znajdzie, wyświetlana jest czaszka (d_skull).
Tutaj zauważę, że podanie weapon_skull wyświetliłoby czaszkę, gdyby nie fakt, że weapon_skull nie jest rozpoznawalną bronią i byt nie zostanie nawet zabity.
weapon_hegrenade zabije gracza, jednak d_hegrenade nie istnieje w pliku gracza, więc zostanie wyświetlona czaszka.
Tutaj wyjątkiem jest klasa grenade (bez weapon_), która ostatecznie wyświetli d_grenade, czyli ikonkę granatu.
Istnieje także offset dla flashbanga (weapon_flashbang), jednakże jest on źle przycięty i wraz z ikoną flashbanga, widać fragment HE.
Poprzez wywołanie eventu DeathMsg można wyświetlić ikonę pociągu, z racji, że jego ikona zaczyna się na d_, tj. d_tracktrain,
jednak byt "tracktrain" ani "weapon_tracktrain" nie są rozpoznawalne, więc za pomocą ww. metody nie osiągniemy tejże ikony.
Przykład:
new weapon=create_entity("weapon_m4a1"); // tworzymy byt o klasie broni M4A1
if(pev_valid(weapon)){
ExecuteHamB(Ham_TakeDamage, tid, weapon, id, float(damage), DMG_BLAST); // zabijamy przy pomocy nowo utworzonego bytu broni M4A1
// weapon_m4a1 jest rozpoznawalnym bytem, więc sprite d_m4a1 zostanie wyświetlony w miejscu broni, która zabiła gracza id
}
remove_entity(weapon); // usuwamy niepotrzebny już byt
@edit: testsuite:
Plugin tworzy byt o klasie wpisanej na sayu i zadaje z niego 200 obrażeń przeciwnej drużynie.
Testować najlepiej z jednym botem w przeciwnej drużynie.
Przykładowo:
- wpisanie na sayu weapon_m3 zabije bota z ikoną M3
- wpisanie na sayu weapon_fake nie zabije bota ani nie wyświetli komunikatu (klasa weapon_fake nie jest rozpoznawalna)
- wpisanie na sayu item_kevlar zabije bota z ikoną czaszki (offset sprite`u d_kevlar nie jest zdefiniowany)
- wpisanie na sayu grenade zabije bota z ikoną granatu (wyjątkowo, nie podajemy tutaj przedrostka weapon_)
Użytkownik Benio101 edytował ten post 05.06.2013 12:57
edit