Problem z zadawaniem obrażeń przez hamsand...
Najlepsza odpowiedź Jcr 21.07.2015 09:16
Dobra ogarnałem, nie wiem czemu brakowało mi mózgu przez 2 tygodnie siedzenia z tym, a dzisiaj usiadłem i w 5 minut to zrobiłem...
Tworzymy zmienna przed public init
new lastattacker[32]
Przy wywołaniu ataku na gracza dajemy sobie
lastattacker[ID OFIARY]=ID ATAKUJACEGO;
W tasku dałem sobie:
ExecuteHamB(Ham_TakeDamage, id, lastattacker[id], lastattacker[id], 1.0, 1<<1)
+ Taki frag dodaje się do csstats + innych rzeczy typu BF2, diablo, cod itp.
Czy wie ktoś może, jak zlikwidować dzwięk uderzenia przy wywołaniu takiego czegoś?
Przejdź do postu
Jcr
13.07.2015
Widziałem już temat :
http://amxx.pl/topic/149213-executeham-takedamage-nie-zadaje-obra%C5%BCe%C5%84-mimo-i%C5%BC-s%C5%82ycha%C4%87-odg%C5%82os-uderzenia/
ale niestety nie rozwiązał mojego problemu.
Problemy idealnie takie same, tylko, że nie chce żadnego codmoda w to mieszać, bo też nie istnieje w żadnym miejscu w amxx u mnie.
Symptomy:
1. Nie są zadawane obrażenia pomimo dźwięku uderzenia
+ Chciałbym usunąć dźwięk tego uderzenia.
linijka:
ExecuteHamB(Ham_TakeDamage, OFIARA, ATAKUJACY, ATAKUJACY, 1.0, 1<<1)
OFIARA = wiadomo, ofiara
ATAKUJACY = wiadomo, atakujacy
1.0 = 1 dmg
1<<1 = obrażenia od kul
zastosowanie w kodzie:
set_task(float(10), "zabierzhp", id, _, _, "b"); public zabierzhp(id)
{ if(is_user_alive(id)) { ExecuteHamB(Ham_TakeDamage, OFIARA, ATAKUJACY, ATAKUJACY, 1.0, 1<<1) { {
Kod wykonuje się co sekundę przez 10 sekund.
Słychać "uderzenia" gracza z taskiem
ps: jeśli zamierza ktoś zamknąć (znowu) za niezrozumiały temat, to proszę o przykład zrozumiałego tematu dla tego wątku.
Rivit
13.07.2015
Kod wykonuje się co sekundę przez 10 sekund.
set_task(float(10), "zabierzhp", id, _, _, "b");
Ten kod wykonuje się co 10s w nieskończoność....
Tu poprawny task na 10 razy co sekunde
set_task(1.0, "zabierzhp", id, _, _, "a", 10);
id- to ofiara?
skąd masz attackera wziąć? Podaj troszkę więcej kodu
Jcr
14.07.2015
Kod wykonuje się co sekundę przez 10 sekund.
set_task(float(10), "zabierzhp", id, _, _, "b");
Ten kod wykonuje się co 10s w nieskończoność....
Tu poprawny task na 10 razy co sekunde
set_task(1.0, "zabierzhp", id, _, _, "a", 10);id- to ofiara?
skąd masz attackera wziąć? Podaj troszkę więcej kodu
Racja rypłem z tymi 10 sekundami, pomyliłem sie
Po południu kopsne wincyj kodu jak będe w domu, czy poprawne zdefiniowanie ATTACKERA, może zacząć zadawać obrażenia?
Może to być tak, że nie zadaje obrażeń, bo jakby nie ma kto ich zadawać?
Rivit
14.07.2015
Lepiej zrobić tablicę i przesłać przez task niż kombinować z id taska
Jcr
16.07.2015
Myślę, że tak
Lepiej zrobić tablicę i przesłać przez task niż kombinować z id taska
Możesz podesłać jakiś przykład? Dalej mam problem z ustawieniem ID atakującego
Jcr
17.07.2015
Ostatni przykład
Dzięki, dzisiaj sobie to sprawdze i dam znać czy pomogło, ostatnio mało czasu mam
A właśnie, jeśli:
- public plugin_init(){
- RegisterHam(Ham_Killed, "player", "HamKilledPost", 1);
- }
pobiera informacje o zabiciu gracza, a żeby pobrać info o samym postrzale, to używam sobie tego?:
- public plugin_init(){
- RegisterHam(Ham_TakeDamage, "player", "Fw_PlayerTakeDamage", 0)'
- }
I tu pytanie jeszcze jedno, "player" to jest ofiara, a jak pobrać atakującego?
Użytkownik Jcr edytował ten post 17.07.2015 09:05
Rivit
17.07.2015
RegisterHam(Ham_Killed, "player", "HamKilledPost", 1);
To łapie zdarzenie śmierci bytu o classname = "player" (czyli gracza), na dodatek jest to zdarzenie POST, czyli nie możesz wpłynąć na zdarzenie już , ale info można pobrać.
RegisterHam(Ham_TakeDamage, "player", "Fw_PlayerTakeDamage", 0)
Postrzał jak postrzał... Zadanie obrażeń bytowi o classname = "player" (czyli gracz), to zdarzenie jest PRE, czyli możesz zmienić np. obrażenia lub atakującego lub damagebits.
To co podasz w miejsce classname, zawsze będzie w handlerze fukcji jako pierwszy parametr...
public Fw_PlayerTakeDamage(ofiara, byt_atakujacy, idatakujacego, Float:damage, damagebits)
w przypadku broni palnych jak i noża 2 i 3 parametr są równe
Jcr
19.07.2015
A mogę prosić o jakiś przykład takiego pluginu? Bo dalej nie mogę sobie poradzić z tym
(takiego który modyfikuje / zadaje obrazenia)
Najlepsza odpowiedź
Jcr
21.07.2015
Dobra ogarnałem, nie wiem czemu brakowało mi mózgu przez 2 tygodnie siedzenia z tym, a dzisiaj usiadłem i w 5 minut to zrobiłem...
Tworzymy zmienna przed public init
new lastattacker[32]
Przy wywołaniu ataku na gracza dajemy sobie
lastattacker[ID OFIARY]=ID ATAKUJACEGO;
W tasku dałem sobie:
ExecuteHamB(Ham_TakeDamage, id, lastattacker[id], lastattacker[id], 1.0, 1<<1)
+ Taki frag dodaje się do csstats + innych rzeczy typu BF2, diablo, cod itp.
Czy wie ktoś może, jak zlikwidować dzwięk uderzenia przy wywołaniu takiego czegoś?
Jcr
21.07.2015
Jeszcze jedna uwaga do takiego kodu, taki typ ataku, zabiera także kevlar, więc jeśli chcemy zadawać po 1 hp to się troche naczekamy, przy zadawaniu 20 dmg, znika ok 10 kevlaru i 10 hp, przy 10 hp, 10 kevlaru i 10 hp, ale przy 2 dmg, znika po 0 / 1 kevlaru i 0 / 1 hp