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

Ham_TakeDamage - jak używać...?


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

#21 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 14:47

Do pobierania broni atakujące można używać "get_user_attacker"? Czy lepiej tak jak w tamtym temacie "get_user_weapon"? Chodzi mi tu szczególnie o to, żeby dobrze wykrywało, gdy obrażenia zostaną zadane z HE.
  • +
  • -
  • 0

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


#22 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 15:16

Obrażenia z HE mają własną flagę w damagebits, nie jest ona zapisana w stałych i jest tuż po ostatniej z nich, 23 jest chyba na końcu więc byłoby to (1<<24). Inflictor wtedy to ent granatu, a attacker to id gracza.
  • +
  • -
  • 1

#23 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 15:30

new clip, ammo, weapon;
if(idinflictor == idattacker) weapon = get_user_weapon(idattacker, clip, ammo);
else if(damagebits & (1<<24)) weapon = CSW_HEGRENADE;

Czyli takie coś będzie dobrze?

I jeszcze mam pytanie co do "ExecuteHamB" i "ExecuteHam". Ich można używać zamiennie? Czy jednak czymś się różnią?
  • +
  • -
  • 0

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


#24 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 15:45

jest w porządku o ile nie zakładasz istnienia innych niestandardowych broni od których gracz może zginąć,

ta funkcja z B na końcu uruchomi też forwardy w pluginach, czyli ExecuterHamB(Ham_TakeDamage, ...) wywoła Twoje fwTakeDamage
samo ExecuterHam po prosto zrobi swoje
  • +
  • -
  • 2

#25 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 15:54

A załóżmy, że zakładam istnienie innych niestandardowych broni, takich jak piroun? Chodzi o piorun co gdzieś tutaj na forum był.
  • +
  • -
  • 0

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


#26 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 15:58

wtedy sprawdź klasę inflitora
new clip, ammo, weapon;
	if(idinflictor == idattacker) weapon = get_user_weapon(idattacker, clip, ammo);
	else if(damagebits & (1<<24)) weapon = CSW_HEGRENADE;
	else{
		new szClass[32];
		pev(idinflictor, pev_classname, szClass, 31);
		
		if(equal(szClass, "MojeObrazenia")){
			weapon = MojeObrazeniaWeaponid;
		}
	}

jak robisz ExecuteHam() to tam podaj inflictora co go sam stworzyłeś z klasą, którą możesz potem sprawdzić, zrobić stocka?

Załączone pliki


  • +
  • -
  • 2

#27 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 16:07

Jakbyś zrobił to bym się nie pogniewał :D
  • +
  • -
  • 0

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


#28 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 16:09

już wkleiłem :)
  • +
  • -
  • 1

#29 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 16:41

Hmmm... A ostatni parametr w "ExecuteHamB" musi posiadać jakąś wartość?
Chyba może, bo przecież "DMG_GENERIC" to 0 ^^ gapa mała :D

Użytkownik sebul edytował ten post 23.05.2011 16:44

  • +
  • -
  • 0

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


#30 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 16:42

ostatni może być 0
jakbyś jakimś cudem nie zauważył to zaznaczam, że wrzuciłem nowy kod hamtest.sma :)
  • +
  • -
  • 0

#31 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 16:48

Zauważyłem ;] Czyli teraz chcąc dodać jakieś nowe ID broni, to po prostu dodaje na początku "new CSW_PIORUN", a potem w "plugin_cfg" nazwę tej broni? I wtedy już mogę używać "CSW_PIORUN" jako ID broni?
  • +
  • -
  • 0

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


#32 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 16:57

jak pobierzesz to potem w fwTakeDamage przez TrieGetCell to tak; to jest rozwiązanie dla wielu broni, jak masz 2 czy 3 to po prostu zrób kilka razy if equal()

To
if(!TrieGetCell(gCustomWeapons, szClass, weapon))
			weapon = 0;
działa jak to
if(equal(szClass, "piorun")){
	weapon = CSW_PIORUN;
}
else if(equal(szClass, "piorun2")){
	weapon = CSW_PIORUN2;
}
else
	weapon = 0;
tylko dla większej ilości tych equali metoda z Trie: jest znacznie szybsza
  • +
  • -
  • 0

#33 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 17:16

Chwila... bo trochę się pogubiłem z tym "TrieGetCell". Czyli żeby wyciągnąć id nowej broni za pomocą TrieGetCell w "fwTakeDamage" co muszę dodać? Może mi to się teraz nie przyda, ale warto by wiedzieć ;]
  • +
  • -
  • 0

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


#34 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 17:32

hamtest.sma jest w pełni funkcjonalne, nic tam nie musisz dodawać, żeby działało; nie chce mi się pisać całego tutka od Trie, więc będzie w pigułce:

drzewo trie pozwala przypisać kluczowi tekstowemu wartość
Trie["klucz"]  = wartość;
ale to się nie skompiluje, dlatego są funkcje

TrieSetCell(Trie, "klucz", wartość);
TrieGetCell(Trie, "klucz", wartość);

oprócz Cell jest jeszcze Array co nie działa w amxx 1.8.1 i String co chyba działa ;P

W plugin_cfg znajdziesz:
gCustomWeapons = TrieCreate();
oznacza to stwórz nowe drzewo Trie o nazwie 'gCustomWeapons'

addCustomWeapon(const szName[])
robi Set czyli jakby
gCustomWeapons['piorun'] = 31

jak dasz kilka broni to masz:
gCustomWeapons['piorun'] = 31
gCustomWeapons['ziemniak'] = 32
gCustomWeapons['magiczny plomien'] = 33



potem w fwTakeDamage pobierasz klasę bytu, a byt tworzony jest w stocku => to co podasz w stocku odczytasz w fwTakeDamage
i pobierasz Get`em
weapon = gCustomWeapons['piorun']; // zgodnie z drzewem bedzie to: weapon = 31

  • +
  • -
  • 2

#35 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 17:38

No teraz coś tam zrozumiałem :D Jeszcze raz dzięki, temat niech dalej będzie otwarty, może nasuną mi się na myśli jakieś inne pytania.
  • +
  • -
  • 0

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


#36 sharkowy

    Lokalna anomalia sejsmiczna o nieustalonej genezie.

  • Przyjaciel

Reputacja: 113
Zaawansowany

  • Postów:1 981
Offline

Napisano 23.05.2011 17:47

Nawet mi pomógł ten temat :P R3X jest taki cudowny.. :love:
  • +
  • -
  • 0

#37 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 19:42

I jeszcze jedno pytanie ;]
Rejestrujemy takie coś
RegisterHam(Ham_TakeDamage, "player", "Obrazenia");
RegisterHam(Ham_TakeDamage, "player", "ObrazeniaPost", 1);

i w obydwu przypadkach można operować wszystkim tak samo? Wyczytałem gdzieś, że to drugie wykonuje się po (pewnie po "Obrazenia"), ale dokładniej po zadaniu obrażeń? Czy po czymś innym?
  • +
  • -
  • 0

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


#38 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 19:44

załóżmy, że w pre gracz ma 100 hp i damage=20.0, to w post gracz ma już 80hp (jak nie ma kamizelki) :)

w post może też nie działać zmiana parametrów i bez znaczenia okazać się może zwracana wartość HAM_*
  • +
  • -
  • 1

#39 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 19:57

To tylko HP gracza się zmienia? Reszta pozostaje taka sama jak w pre?
  • +
  • -
  • 0

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


#40 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 23.05.2011 20:04

w zasadzie to zmieniaja sie obrazenia i liczba obrazen jest wyslana do silnika i to silnik zabiera hp ale rownie dobrze mozna zmienic atakujacego czy ofiare ale nie wiem jak bedzie z serverem czy nie zlapie crasha bo nigdy nie probowalem :D
  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D




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

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