Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problemik z Ham_TakeDamageJakim bytem zadźgać gracza, aby uzyskać odpowiedni Death Message?


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 03.06.2013 23:43

Problemik mam następujący, stworzyłem sobie ładny radius damage, który w założeniu ma zadawać dość spore obrażenia... No powiedzmy, że śmierć gracza stojącego w pobliżu jest nieunikniona. Więc i zgony zdarzają się często. Zadaję damage tak:

ExecuteHamB(Ham_TakeDamage, tid, id, id, float(damage), DMG_BLAST);

 

Problem jest następujący: death message nie wyświetla się wcale... Jaki byt zamiast jednego id powinienem podać, aby ten message się wyświetlił? I jakie "ciekawe" byty mogę tam podać, aby otrzymać jakąś ciekawą ikonkę broni?


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 05.06.2013 12:49

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:

Spoiler
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


#3 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 05.06.2013 14:30

Problemik mam następujący, stworzyłem sobie ładny radius damage, który w założeniu ma zadawać dość spore obrażenia... No powiedzmy, że śmierć gracza stojącego w pobliżu jest nieunikniona. Więc i zgony zdarzają się często. Zadaję damage tak:
 

ExecuteHamB(Ham_TakeDamage, tid, id, id, float(damage), DMG_BLAST);
 
Problem jest następujący: death message nie wyświetla się wcale... Jaki byt zamiast jednego id powinienem podać, aby ten message się wyświetlił? I jakie "ciekawe" byty mogę tam podać, aby otrzymać jakąś ciekawą ikonkę broni?

Trochę dziwna sprawa, bo powinno się wyświetlić info, że gracz został zabity, a ikonką powinna być broń, jaką akurat dany gracz ma wybraną, przynajmniej tak właśnie było (i chyba jest) u mnie na serwerze. Reszta została napisana wyżej.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 GwynBleidD

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 05.06.2013 16:56

Dokładnie takie samo mam wrażenie po przeczytaniu postu benia... Czy problem może się brać z faktu, że tak naprawdę gracz "obrywa" kilka razy w ciągu 1 sekundy? (ściślej 5 razy co 0.1 sekundy)

 

Za chwilę sprawdzę z bytem granatu kod.


GwynBleidD (05.06.2013 17:18):
Myślę, że za brak DeathMsg odpowiada DMG_BLAST...
GwynBleidD (05.06.2013 17:47):
Za brak DeathMsg odpowiadał DMG_BLAST, który jest typowy dla wybuchu bomby (która jak wiadomo nie generuje DeathMsg). Zmiana na DMG_GENERIC dała efekt w postaci ładnego info o śmierci, mam jednak problem jak teraz dodać fraga/deada do rankingu...
sebul (06.06.2013 00:57):
Jeśli jako 3 parametr dasz id gracza, to frag powinien dodać się do rankingu, co innego jeśli dasz tam jakiś inny byt, wtedy chyba nie da się nic zrobić, żeby frag był dodany do tego rankingu.

  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych