←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

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... :D

 

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 - zdjęcie 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.

Odpowiedz

  • +
  • -
Rivit - zdjęcie 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 :D

Odpowiedz

  • +
  • -
Jcr - zdjęcie 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 :D

 

Racja rypłem z tymi 10 sekundami, pomyliłem sie :P

 

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ć?
 

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 14.07.2015

Myślę, że tak

Lepiej zrobić tablicę i przesłać przez task niż kombinować z id taska
Odpowiedz

  • +
  • -
Jcr - zdjęcie 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 :/
 

Odpowiedz

  • +
  • -
Jcr - zdjęcie Jcr 17.07.2015

Dzięki, dzisiaj sobie to sprawdze i dam znać czy pomogło, ostatnio mało czasu mam :)

 

A właśnie, jeśli:

  1. public plugin_init(){
  2. RegisterHam(Ham_Killed, "player", "HamKilledPost", 1);
  3. }

pobiera informacje o zabiciu gracza, a żeby pobrać info o samym postrzale, to używam sobie tego?:

  1. public plugin_init(){
  2. RegisterHam(Ham_TakeDamage, "player", "Fw_PlayerTakeDamage", 0)'
  3. }

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
Odpowiedz

  • +
  • -
Rivit - zdjęcie 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

 

Odpowiedz

  • +
  • -
Jcr - zdjęcie 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)

Odpowiedz

  • +
  • -
Najlepsza odpowiedź Jcr - zdjęcie 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... :D

 

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ś?

 

Odpowiedz

  • +
  • -
Jcr - zdjęcie 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

Odpowiedz

  • +
  • -
Jcr - zdjęcie Jcr 21.07.2015

Do zamknięcia

Odpowiedz