Użytkownik Pan PrO edytował ten post 18.11.2012 18:33
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.
|
id gracza który znajduje się najbliżej entu
#1
Napisano 18.11.2012 18:33
#2
Napisano 18.11.2012 18:40
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ę.
#3
Napisano 18.11.2012 18:54
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
#4
Napisano 18.11.2012 18:59
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
#5
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
}
#6
Napisano 18.11.2012 19:14
- 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.
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ę.
#7
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ś ??
#8
Napisano 18.11.2012 19:51
Nie testowano
Użytkownik HubertTM edytował ten post 18.11.2012 19:51
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
#9
Napisano 18.11.2012 20:38
#10
Napisano 18.11.2012 20:55
#11
Napisano 18.11.2012 22:16
#12
Napisano 18.11.2012 22:38
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL
DarkGL to mój autorytet.
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych