Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

różna przezroczystość


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

#1 stmn

    Pomocny

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 07.06.2010 16:11

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.
  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 07.06.2010 18:47

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>
  • +
  • -
  • 1

#3 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 07.06.2010 20:32

Czyli mogę zmienić rendering dowolnej rzeczy? W takim razie, jak mogę zmienić rendering obiektu 'Przedmiot', mam takie coś:

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?
  • +
  • -
  • 0

#4 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1549
  • Lokalizacja:.
Offline

Napisano 07.06.2010 22:43

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
  • +
  • -
  • 0

#5 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1725
Godlike

  • Postów:6881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 07.06.2010 22:58

while(iEnt > 0) 

->
if (iEnt)

W twoim przypadku przy znalezieniu pętla wykonuje się w nieskończoność ;>

No chyba nie bo find_ent_by_class zwraca chyba -1 w przypadku nie znalezienia kolejnego obiektu.
  • +
  • -
  • 1

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 08.06.2010 09:17

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
  • +
  • -
  • 0

#7 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 08.06.2010 10:54

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.
  • +
  • -
  • 0

#8 R3X

    Godlike

  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 08.06.2010 11:05

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
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
  • +
  • -
  • 1

#9 stmn

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • GG:
  • Lokalizacja:Poznań
Offline

Napisano 08.06.2010 12:37

Wystarczy dodać isMine[ent] = true; przy tworzeniu? :P 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. :D

@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

  • +
  • -
  • 0




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

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