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

Zapamietanie ostatniego gracza, który zaatakował innego graczaGdy gracz2, zginie np: spadajac z wysokości, a gracz1 wcześniej go postrzelił, to gracz1 dostaje fraga

frag gracz player amxx ostatni atakujacy ostatni atakujacy ffa bf2 tp

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

#1 Jcr

    Pomocny

  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 03.07.2015 18:23

Witam, mam taki oto kodzik

To jest wywołanie taska na graczu:

set_task(float(HP_TIME), "zabierzHP", id, _, _, "b");

To jest wywołany task, który wykonuje się co sekunde, zabierając graczowi 1hp

public zabierzHP(id)
{
    if(is_user_alive(id))
    {
        fm_set_user_health(id, get_user_health(id) -HP);
    }
}

Chodzi o to, że gdy włączę tego taska, po tym jak ktoś zada obrażenia GRACZOWI na którym task został ustawiony, to gdy umiera, chciałbym, żeby GRACZ dostał za niego fraga

Coś mniej więcej takiego, żeby np:

 

GRACZ1 postrzelił GRACZ2 (GRACZ1 jest ostanim atakującym GRACZA2)

GRACZ2 umarł przez taska / spadł w przepaść / spadł i się zabił

GRACZ1 dostał fraga za GRACZ2

 

Próbowałem już wgrywać system asyst, niestety, one olewają zabicia z tytułu world, lub tasków

Czy mogę liczyć na waszą pomoc?? :)


  • +
  • -
  • 0

#2 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 03.07.2015 19:18

Hmm. Mozesz sprobowac wykryc ostatnia ofiare gracza przez takedamage, potem przeniesc to do zmiennych i przypisac do taska.


  • +
  • -
  • 0

b35020692_qesnxqa.png


#3 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 03.07.2015 19:32

dodaj zmienną nad plugin_init

new ostatni[33]

 

w momencie wywoływania tasku dla jakiegoś gracza który ma tracic hp

ostatni[id gracza ktory dostal] = id gracza ktory postrzelil

przedostatnie : task podmien na =

 

public zabierzHP(id)
{
    if(is_user_alive(id))
    {
        if(get_user_health(id) < HP + 1 && is_user_connected(ostatni[id])
        {
            set_user_frags(ostatni[id], get_user_frags(ostatni[id]) + 1)
        }
        fm_set_user_health(id, get_user_health(id) -HP);
    }
}
 

jezeli nie masz client_disconnect to dodaj go i wklep :

 

for(new i=0;i<get_maxplayers();i++)
{
    if(ostatni[i] == id)
    ostatni[i] = 0
}

ostatni[id] = 0


Użytkownik NoLiFeR edytował ten post 03.07.2015 19:40

  • +
  • -
  • 0

#4 Jcr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 04.07.2015 16:41

 

dodaj zmienną nad plugin_init

new ostatni[33]

 

w momencie wywoływania tasku dla jakiegoś gracza który ma tracic hp

ostatni[id gracza ktory dostal] = id gracza ktory postrzelil

przedostatnie : task podmien na =

 

public zabierzHP(id)
{
    if(is_user_alive(id))
    {
        if(get_user_health(id) < HP + 1 && is_user_connected(ostatni[id])
        {
            set_user_frags(ostatni[id], get_user_frags(ostatni[id]) + 1)
        }
        fm_set_user_health(id, get_user_health(id) -HP);
    }
}
 

jezeli nie masz client_disconnect to dodaj go i wklep :

 

for(new i=0;i<get_maxplayers();i++)
{
    if(ostatni[i] == id)
    ostatni[i] = 0
}

ostatni[id] = 0

 

W żaden sposób nie działa, nawet jak sobie wrzuce przy wywołaniu:

 

set_user_frags(lastattacker[id], get_user_frags(lastattacker[id]) + 1)

 

Co by skutkowało 1 trafienie = 1 frag
 


  • +
  • -
  • 0

#5 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 04.07.2015 21:29

ExecuteHamB(Ham_TakeDamage, ofiara, idinflictor, idattacker, 30.0, dmgbits)

Tak zadawaj dmg...

 

ofiara - index ofiary

idinflictor - byt zadajacy obrazenia, w tym przypadku taki sam jak idattacker

idattacker- index atakujacego

30.0 - damage

dmgbits - typ obrazen (od pocisku to będzie 1<<1)


  • +
  • -
  • 1

#6 Jcr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 07.07.2015 15:47

ExecuteHamB(Ham_TakeDamage, ofiara, idinflictor, idattacker, 30.0, dmgbits)

Tak zadawaj dmg...

 

ofiara - index ofiary

idinflictor - byt zadajacy obrazenia, w tym przypadku taki sam jak idattacker

idattacker- index atakujacego

30.0 - damage

dmgbits - typ obrazen (od pocisku to będzie 1<<1)

 

 

Mam z tym taki problem, że na graczu wykonuje się co sekunde ale:

1. Graczowi nie ubywa HP

2. Co sekunde słyszę uderzenie (tak jakby ktoś co sekunde w niego strzelał)((chciałbym się tego pozbyć))

3. Jeśli gracza postrzele 2,3 razy, to linijka wykonuje się kilkukrotnie (nieważne ile razy ktoś został postrzelony, ma się wykonywać raz co sekunde)
 


  • +
  • -
  • 0

#7 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 07.07.2015 21:13

Co to pkt3 to sprawdzaj czy task już istnieje. task_exists
  • +
  • -
  • 0

#8 Jcr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 08.07.2015 08:23

Co to pkt3 to sprawdzaj czy task już istnieje. task_exists

W sumie racja, to będzie ez do zrobienia bo tylko dodatkowy warunek do ifa sobie dorzuce, a co z 1 i 2??


  • +
  • -
  • 0

#9 Jcr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 12.07.2015 13:48

Do zamknięcia, nie znalazłem dobrego rozwiązania ale chce założyć bardziej sprecyzowany temat o

ExecuteHamB(Ham_TakeDamage, ofiara, idinflictor, idattacker, 30.0, dmgbits)

  • +
  • -
  • 1





Również z jednym lub większą ilością słów kluczowych: frag, gracz, player, amxx, ostatni, atakujacy, ostatni atakujacy, ffa, bf2, tp

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

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