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

[ROZWIĄZANE] Wtedy, kiedy byt zabija gracza


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 21.10.2012 08:24

Witam,
otóż chciałbym się dowiedzieć, czy kiedy gracz X zabije gracza Y z np. rakiety na codmodzie, to kiedy w DeathMsg dodam cos takiego
new weapon[32]; read_data(4, weapon, 31);

To czy weapon bedzie mialo nazwe "rocket" ?

Użytkownik d0n tHe Pr0oo edytował ten post 21.10.2012 08:25

  • +
  • -
  • 0

#2 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 21.10.2012 08:53

Nie, bo przy dotknięciu rakiety wykonujesz funkcję wywolujaca obrazenia/śmierć ( np. Ham_TakeDamage ) na niezarejestrowanej klasie bytu, silnik nie wie jak to rozpoznać i defaultowo ten argument powinienen być pusty lub zawierać string "worldspawn". Ogólnie, ten argument jest używany do przechowywania nazwy sprite wyświetlanego w killboard'dzie.
  • +
  • -
  • 1

marwit-0.png


#3 d0naciak

    Godlike

  • Autor tematu
  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 21.10.2012 08:58

to jak inaczej zrobić, by sprawdzić czy gracz zabił z rakiety ? Moze w ham_takedamage sprawdzac czy obrazenia sa wieksze, rowne hp obrywajacego, i czy byt atakujacy posiada classname rocket ?
  • +
  • -
  • 0

#4 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 21.10.2012 09:12

Tak jak mówisz będzie działać, ew. możesz jeszcze w TakeDamage zapisywać id atakującego bytu do tablicy i wykorzystywać w Ham_Killed lub jakimś innym evencie zabójstwa.
  • +
  • -
  • 1

marwit-0.png


#5 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 21.10.2012 10:46

to jak inaczej zrobić, by sprawdzić czy gracz zabił z rakiety ? Moze w ham_takedamage sprawdzac czy obrazenia sa wieksze, rowne hp obrywajacego, i czy byt atakujacy posiada classname rocket ?

A gdyby zmienić sprite na rocket w killboard ?
  • +
  • -
  • 1

#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 21.10.2012 11:30

new inflictor = create_entity("info_target");
entity_set_string(inflictor, EV_SZ_classname, "rocket");
/*entity_set_edict(inflictor, EV_ENT_owner, attacker);
entity_set_edict(inflictor, EV_ENT_enemy, victim);*/
ExecuteHam(Ham_TakeDamage, victim, inflictor, attacker, fDamage, bits);
entity_set_int(inflictor, EV_INT_flags, FL_KILLME);

Tylko wtedy jeśli ktoś od tego zginie, to nie będzie się to liczyć do ranku. Oczywiście wtedy nazwa broni w logach będzie taka "rocket", a jeśli chcesz, żeby w sprite był wyswietlany inny obrazek niż czaszka, to wystarczy zrobić coś takiego
register_message(get_user_msgid("DeathMsg"), "MessageDeathMsg");

public MessageDeathMsg(msgID, msgDest, msgEnt) {
new szTmp[32];
get_msg_arg_string(4, szTmp, 31);

new weapon;
if(TrieGetCell(gCustomWeapons, szTmp, weapon)) {
replace(szTmp, 31, "rocket", "knife");
// i tu można wszystkie nazwy podawać kolejno w ten sam sposób co wyżej
}
if(weapon)
set_msg_arg_string(4, szTmp);
}

Widać też, że jest tu użyte drzewo, czyli trzeba też tak jakby rejestrować każdą nową nazwę, czyli robimy mniej więcej coś takiego
new Trie:gCustomWeapons;
new giLastCustomWeaponId = CSW_P90;

gCustomWeapons = TrieCreate();

public ZarejestrujNowaBron(const szName[]) {
new CustomWeapon;
if(TrieGetCell(gCustomWeapons, szName, CustomWeapon))
return CustomWeapon;

TrieSetCell(gCustomWeapons, szName, ++giLastCustomWeaponId);
return giLastCustomWeaponId;
}


Jeszcze podam tylko w jaki sposób najlepiej wyciągać nazwę "broni"
register_event("DeathMsg", "SmiercPost", "a");

public SmiercPost() {
new weaponname[32];
read_data(4, weaponname, 31);

new weapon;
TrieGetCell(gCustomWeapons, weaponname, weapon);

if(!weapon) {
if(equal(weaponname, "grenade")) {
format(weaponname, 31, "weapon_he%s", weaponname);
}
else if(!equal(weaponname, "weapon_", 7))
format(weaponname, 31, "weapon_%s", weaponname);

weapon = get_weaponid(weaponname);
}
}

  • +
  • -
  • 1

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


#7 d0naciak

    Godlike

  • Autor tematu
  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 21.10.2012 13:20

Można zamknąć :>
  • +
  • -
  • 0

#8 Kawon

    Godlike

  • Przyjaciel

Reputacja: 887
Czempion

  • Postów:5 165
  • Steam:steam
  • Imię:Paweł
  • Lokalizacja:Dzierzgoń
Offline

Napisano 21.10.2012 13:21

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

DarkGL to mój autorytet.





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

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