Pytanie proste, czy istnieje przypadek gdy jednocześnie is_user_alive będzie 1, a is_user_connected bedzie 0?
Inaczej, czy trzeba sprawdzać connect, gdy sprawdzamy alive ==> czy is_user_alive 1 w 100% przypadków wyklucza is_user_connected 0?
Z góry dzięki za odp
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.
|

[ROZWIĄZANE] Czy żywy gracz może być nie połączony? (is_user_alive)
#1
Napisano 11.01.2015 02:51
#2
Napisano 11.01.2015 02:55
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 11.01.2015 03:02
Jak gracz może być żywy, nie będąc podłączonym ?
#4
Napisano 11.01.2015 03:18
Tak samo jak może być martwy w chwili spawnu. Pytanie było dość proste, ale do zaawansowanych, a raczej doświadczonych skrypterów, a tak w ogóle to przed znakiem zapytania nie stawia się spacji
Dzięki GwynBleidD za odp, ale poczekam na opinie innych hajtów programowania :v
#5
Napisano 11.01.2015 09:19
Jeżeli gracz jest żywy, to musi być połączony, nie ma innej opcji, jak sobie wyobrażasz to inaczej?
Sprawdź sobie - mianowicie sprawdzania, czy gracz jest żywy ma wbudowane najpierw sprawdzenie, czy gracz w ogóle jest połączony.
static cell AMX_NATIVE_CALL is_user_connected(AMX *amx, cell *params) /* 1 param */ { int index = params[1]; if (index < 1 || index > gpGlobals->maxClients) return 0; CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); return(pPlayer->ingame ? 1 : 0); } extern bool g_bmod_tfc; static cell AMX_NATIVE_CALL is_user_alive(AMX *amx, cell *params) /* 1 param */ { int index = params[1]; if (index < 1 || index > gpGlobals->maxClients) { return 0; } CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); if (g_bmod_tfc) { edict_t *e = pPlayer->pEdict; if (e->v.flags & FL_SPECTATOR || (!e->v.team || !e->v.playerclass)) { return 0; } } return((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0); }
Użytkownik Wielkie Jol edytował ten post 11.01.2015 09:22
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
#6
Napisano 11.01.2015 09:32
#7
Napisano 11.01.2015 09:59
#8
Napisano 11.01.2015 10:06 Najlepsza odpowiedź
return((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0);
Z tego jasno wynika, że gracz musi być ingame ( w grze ), a dopiero potem jest sprawdzane, czy gracz jest żywy ( zwraca 1 ) czy nie ( zwraca 0 ).
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
#9
Napisano 11.01.2015 11:00
W chwili spawnu czasami jest martwy, bo istnieje jeden przypadek, gdzie jeszcze przed spawnem funkcja od spawnu może się wykonać raz. Dostałeś odpowiedź i tutaj opinie innych "hajtów" nic nie zmienią.Tak samo jak może być martwy w chwili spawnu. Pytanie było dość proste, ale do zaawansowanych, a raczej doświadczonych skrypterów, a tak w ogóle to przed znakiem zapytania nie stawia się spacji
Dzięki GwynBleidD za odp, ale poczekam na opinie innych hajtów programowania :v
!alive && connectedA czy jak sprawdzam czy gracz jest zywy i zwraca 0 (martwy) To muszę sprawdzać czy jest połączony? Przykład: chcę zrobić komendę która będzie działać tylko dla martwych. Czy samo !alive wystarczy czy muszę !alive && connected?
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#10
Napisano 11.01.2015 12:00
!alive && connected
Czemu !alive && connected?
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
#11
Napisano 11.01.2015 13:27
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#12
Napisano 11.01.2015 14:06
Z tego jasno wynika, że gracz musi być ingame ( w grze ), a dopiero potem jest sprawdzane, czy gracz jest żywy ( zwraca 1 ) czy nie ( zwraca 0 ).
return((pPlayer->ingame && pPlayer->IsAlive()) ? 1 : 0);
Dla mnie z tego jasno wynika, że jest to warunek złożony z dwóch i jeśli co najmniej jeden jest niespełniony to zwraca 0, jeśli tylko alive będzie niespełniony to zwróci 0, jeśli także connected będzie niespełniony, to też zwróci 0,skąd zatem po zwróconym zerze chcesz wiedzieć czy gracz jest niepołączony czy połączony, ale martwy.
Gdyby w przypadku braku gracza nie zwracało 0 lecz np. -1 to funkcja is_user_connected stała by się praktycznie bezużyteczna, chociaż mogłaby zostać dla intuicyjnego znalezienia po nazwie.
Co zaś tyczy się pytania Ossal'a:
Jeśli is_user_alive zwraca 1 to na 100% gracz jest połączony.
Użytkownik grankee edytował ten post 11.01.2015 14:10
#13
Napisano 11.01.2015 15:13
Jak widać tylko Wielkie Jol potrafił wyjaśnić co i dlaczego, łap plusa, odpowiedź udzielona
#14
Napisano 11.01.2015 15:24
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,

Z pozdrowieniami,
Zespół AMXX.PL
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ę.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych