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

id gracza który znajduje się najbliżej entu


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

#1 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 18.11.2012 18:33

Witam. Jak wyłapać id gracza który znajduje się najbliżej entu w promieniu x unitów oczywiście pomijając właściciela entu ??

Użytkownik Pan PrO edytował ten post 18.11.2012 18:33

  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 18.11.2012 18:40

Pętla po wszystkich graczach, sprawdzająca ich odległość od entu, wykluczająca właściciela. Tylko tak to widzę.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#3 Pan PrO

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 18.11.2012 18:54

coś takiego ??


new entlist[33];
new numfound = find_sphere_class(ent, "player", 300.0, entlist, 32);

for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
new id = pev(ent, pev_owner);
new Float:gfOrigin[2];

entity_get_vector(pid, EV_VEC_origin, gfOrigin[1]);
entity_get_vector(ent, EV_VEC_origin, gfOrigin[0]);

new dystans = gfOrigin[1]-gfOrigin[0];

if(!is_user_alive(pid) || is_user_alive(id) || get_user_team(attacker) == get_user_team(pid))
continue;

// kod
}

Użytkownik Pan PrO edytował ten post 18.11.2012 18:54

  • +
  • -
  • 0

#4 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 18.11.2012 18:59

http://amxx.pl/dokum.../get-distance-f
To powinno pomóc.
  • +
  • -
  • 1

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#5 Pan PrO

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 18.11.2012 19:10

http://amxx.pl/dokum.../get-distance-f
To powinno pomóc.


Skierowało mnie na dobrą drogę i nie wiem co dalej



new entlist[33];
new numfound = find_sphere_class(ent, "player", 300.0, entlist, 32);

for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
new id = pev(ent, pev_owner);
new Float:gfOrigin[2][3];

entity_get_vector(pid, EV_VEC_origin, gfOrigin[0]);
entity_get_vector(ent, EV_VEC_origin, gfOrigin[1]);

new Float:dis = get_distance_f(gfOrigin[0], gfOrigin[1]);

if(!is_user_alive(pid) || is_user_alive(id) || get_user_team(attacker) == get_user_team(pid))
continue;

// kod
}

  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 18.11.2012 19:14

Kilka uwag:
  • Sprawdzanie, czy właściciel entu żyje wyrzuć przed pętlę... Szkoda przeczesywać wszystkich graczy, jeśli nie żyje
  • rozbij ten warunek z continue na kilka ifów, poprawi czytelność.
  • Warunki wyjścia z pętli analizuj przed wykonaniem pobrania odległości itp... przynajmniej te, do których tego nie potrzebujesz.
  • find_sphere_class może lepiej odpuść. Wydajniej będzie przeczesać WSZYSTKICH graczy i sprawdzić, czy są w wymaganej minimalnej odległości

A co dalej? Utwórz 2 zmienne: 1 będzie przechowywać id najbliższego gracza, 2 odległość. W pętli po odczytaniu odległości 2 warunki: jeśli ID najbliższego = 0, zapisujesz dane bieżącego gracza do zmiennych i wychodzisz. Jeśli id>0 porównujesz czy id bieżącego jest mniejsze od najbliższego, jeśli jest to nadpisujesz nowymi danymi.

Po wyjściu z pętli będziesz miał id najbliższego gracza, bądź 0 jeśli nie ma żadnego w wymaganym zasięgu.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 Pan PrO

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 18.11.2012 19:35

Kilka uwag:

  • Sprawdzanie, czy właściciel entu żyje wyrzuć przed pętlę... Szkoda przeczesywać wszystkich graczy, jeśli nie żyje
  • rozbij ten warunek z continue na kilka ifów, poprawi czytelność.
  • Warunki wyjścia z pętli analizuj przed wykonaniem pobrania odległości itp... przynajmniej te, do których tego nie potrzebujesz.
  • find_sphere_class może lepiej odpuść. Wydajniej będzie przeczesać WSZYSTKICH graczy i sprawdzić, czy są w wymaganej minimalnej odległości

A co dalej? Utwórz 2 zmienne: 1 będzie przechowywać id najbliższego gracza, 2 odległość. W pętli po odczytaniu odległości 2 warunki: jeśli ID najbliższego = 0, zapisujesz dane bieżącego gracza do zmiennych i wychodzisz. Jeśli id>0 porównujesz czy id bieżącego jest mniejsze od najbliższego, jeśli jest to nadpisujesz nowymi danymi.

Po wyjściu z pętli będziesz miał id najbliższego gracza, bądź 0 jeśli nie ma żadnego w wymaganym zasięgu.


Możesz napisać tę funkcję w miarę możliwości bo się pogubiłem w tym co napisałeś ??
  • +
  • -
  • 0

#8 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 18.11.2012 19:51

http://amxx.pl/pastebin/4s736dz5tam8/
Nie testowano :P

Użytkownik HubertTM edytował ten post 18.11.2012 19:51

  • +
  • -
  • 1

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#9 nPaul

    Zaawansowany

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:142
  • Imię:Piotr
  • Lokalizacja:United Kingdom / Hereford
Offline

Napisano 18.11.2012 20:38

A ja ci po prostu powiem żebyś zajrzał w kod CodModa a dokładnie ApteczkaThink
  • +
  • -
  • 0

#10 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 18.11.2012 20:55

@up - apteczka ma określoną wielkość w Codzie (postawiona na Respie CT nie uzdrowi na respie TT - nie sięga) i to nie przejdzie.
  • +
  • -
  • 1

#11 Pan PrO

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 18.11.2012 22:16

Można Zamknąć nie będę wam zajmował czasu.
  • +
  • -
  • 0

#12 Kawon

    Godlike

  • Przyjaciel

Reputacja: 887
Czempion

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

Napisano 18.11.2012 22:38

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


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