różna przezroczystość
stmn
07.06.2010
Z tego co znalazłem, to można przykładowo dla CT ustawić przezroczystość postaci mniejszą niż dla T korzystając z AddToFullPack. A czy to samo jest możliwe dla utworzonych obiektów/przedmiotów/podmiotów (entities)? Próbowałem znajdować obiekty za pomocą find_ent_by_class i za pomocą set_es ustawić przezroczystość ale albo się nie da albo nie umiem.
R3X
07.06.2010
AddToFullPack jest konieczny, gdy chcesz by jakieś zmiany były widoczne dla wybranych graczy
zmiana renderingu, co ją wszyscy widzą może nastąpić w każdym dowolnym evencie gry, np. przy spawnie + set_rendering z <engine>
zmiana renderingu, co ją wszyscy widzą może nastąpić w każdym dowolnym evencie gry, np. przy spawnie + set_rendering z <engine>
stmn
07.06.2010
Czyli mogę zmienić rendering dowolnej rzeczy? W takim razie, jak mogę zmienić rendering obiektu 'Przedmiot', mam takie coś:
W momencie spełnienia warunku serwer łapie zawieszkę i się crashuje bez wpisów. Mogę prosić o opis zmiennych przekazywanych tej funkcji?
public RenderingSet(es_handle, e, ent, host, hostflags, player, pSet) { if(nick_gracza[host] == stmn){ new iEnt = find_ent_by_class(-1, "Przedmiot"); while(iEnt > 0) { set_es(iEnt, ES_RenderAmt, 50); // tu sie wywala iEnt = find_ent_by_class(iEnt, "Przedmiot"); } } return FMRES_IGNORED; }
W momencie spełnienia warunku serwer łapie zawieszkę i się crashuje bez wpisów. Mogę prosić o opis zmiennych przekazywanych tej funkcji?
Vertricus
07.06.2010
while(iEnt > 0)
->
if (iEnt >0)
W twoim przypadku przy znalezieniu pętla wykonuje się w nieskończoność
@Down
Wybacz już poprawiłem ;d a dałby se łeb uciąć że 0 ;x
mgr inż. Pavulon
07.06.2010
No chyba nie bo find_ent_by_class zwraca chyba -1 w przypadku nie znalezienia kolejnego obiektu.while(iEnt > 0)
->if (iEnt)
W twoim przypadku przy znalezieniu pętla wykonuje się w nieskończoność
R3X
08.06.2010
HLSDK DLLAPI Notes
Skoro upierasz się przy AddToFullPack (es_handle) to musisz wiedzieć, że jest to wykonywane ILE_GRACZY*ILE_BYTÓW razy na ramkę, a ramka jest aktualizowana kilkadziesiąt razy na sekundę. Wrzucanie takiego while`a do tego forwardu jest delikatnie mówiąc nieoptymalne.
Jeśli powiesz do czego chcesz użyć tej metody będzie łatwiej. Raczej pewne, że nie trzeba takiej częstotliwości wykonania zmiany renderingu.
Jeśli nick gracza jest liczbą (?) a stmn stałą/makrem/polem enuma to warunek jest ok, ale nie sądzę
do porównania stringów używa się equal
Skoro upierasz się przy AddToFullPack (es_handle) to musisz wiedzieć, że jest to wykonywane ILE_GRACZY*ILE_BYTÓW razy na ramkę, a ramka jest aktualizowana kilkadziesiąt razy na sekundę. Wrzucanie takiego while`a do tego forwardu jest delikatnie mówiąc nieoptymalne.
Jeśli powiesz do czego chcesz użyć tej metody będzie łatwiej. Raczej pewne, że nie trzeba takiej częstotliwości wykonania zmiany renderingu.
Jeśli nick gracza jest liczbą (?) a stmn stałą/makrem/polem enuma to warunek jest ok, ale nie sądzę
nick_gracza[host] == stmn
do porównania stringów używa się equal
stmn
08.06.2010
HLSDK DLLAPI Notes
Skoro upierasz się przy AddToFullPack (es_handle) to musisz wiedzieć, że jest to wykonywane ILE_GRACZY*ILE_BYTÓW razy na ramkę, a ramka jest aktualizowana kilkadziesiąt razy na sekundę. Wrzucanie takiego while`a do tego forwardu jest delikatnie mówiąc nieoptymalne.
Jeśli powiesz do czego chcesz użyć tej metody będzie łatwiej. Raczej pewne, że nie trzeba takiej częstotliwości wykonania zmiany renderingu.
Jeśli nick gracza jest liczbą (?) a stmn stałą/makrem/polem enuma to warunek jest ok, ale nie sądzęnick_gracza[host] == stmn
do porównania stringów używa się equal
Ten warunek to tylko przykład.
Upieram się przy AddToFullPack, bo nic innego nie znalazłem.
A chciałem to wykorzystać do widzenia min w modzie coda przez np. klase czy posiadany item.
R3X
08.06.2010
aha spoko, czyli dobrze wybrałeś metodę tylko ten while...
najlepsze wyjście to tablica bool:ents[512] i wpisywać tam true (gdy byt jest miną) i false (gdy nie jest miną), w funkcji tworzenia minu ustaw na true, a przy eksplozji czy na końcu rundy (nie wiem kiedy tam sprzątają) false
i wtedy
Edit.
Crashowało bo podałeś zamiast uchwytu es_handle id bytu
najlepsze wyjście to tablica bool:ents[512] i wpisywać tam true (gdy byt jest miną) i false (gdy nie jest miną), w funkcji tworzenia minu ustaw na true, a przy eksplozji czy na końcu rundy (nie wiem kiedy tam sprzątają) false
i wtedy
new bool:isMine[512]; // czy jest miną new hasItem[33]; // czy gracz ma item/klasę public RenderingSet(es_handle, e, ent, host, hostflags, player, pSet) { if(!player){ if(hasItem[host] && isMine[ent]){ set_es(es_handle, ES_RenderAmt, 50); } } }
Edit.
Crashowało bo podałeś zamiast uchwytu es_handle id bytu
stmn
08.06.2010
Wystarczy dodać isMine[ent] = true; przy tworzeniu? Tak zrobiłem, i wynik jest niemal pozytywny - gdy jest na mapie mina i mam odpowiednią klasę to printuje mi wiadomość więc ten etap chyba działa poprawnie, jednak rendering min się nie zmienia.
@edit
Auć. Brakowało: set_es(es_handle,ES_RenderMode,kRenderTransTexture);
Wygląda na to, że teraz działa.
Użytkownik stmn edytował ten post 08.06.2010 13:33
@edit
Auć. Brakowało: set_es(es_handle,ES_RenderMode,kRenderTransTexture);
Wygląda na to, że teraz działa.
Użytkownik stmn edytował ten post 08.06.2010 13:33