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

Problemy z pev_solid


  • Nie mo偶esz napisa膰 tematu
  • Zaloguj si臋, aby doda膰 odpowied藕
9 odpowiedzi w tym temacie

#1 csMaster

    Wszechwiedz膮cy

  • Power User

Reputacja: 14
Pocz膮tkuj膮cy

  • Post贸w:554
  • Lokalizacja:localhost
Offline

Napisano 15.07.2024 19:47

Pewnie ju偶 nie jedna osoba graj膮ca w cs zauwa偶y艂a problem dotycz膮cy entity. Mianowicie, nie mo偶na po nich chodzi膰 (ani si臋 o nie ociera膰), bo powoduje to dziwne "艣cinki".

Problem ten nie wyst臋puje w przypadku byt贸w b臋d膮cych cz臋艣ci膮 mapy, ale w przypadku tych stworzonych przez pluginy - ju偶 tak. Dotyczy to zar贸wno SOLID_BBOX jak i SOLID_SLIDEBOX wraz z r贸偶nymi MOVETYPE_*.

 

P贸ki co, pr贸bowa艂em ju偶 r贸偶nych metod, ale 偶adna nie spowodowa艂a praktycznie 偶adnej zmiany:

Spoiler

 

Pr贸bowa艂em ustawi膰 jeszcze pev_solid na SOLID_BSP, ale to w艂a艣nie sprawia problemy. Przy zmianie pev_movetype na MOVETYPE_PUSH (a tego wymaga SOLID_BSP), entity po prostu znika. Albo jego pozycja si臋 zmienia, albo przestaje by膰 "solidny" i mo偶na przez niego przej艣膰 jakby go nie by艂o. To samo dzieje si臋, gdy ustawie MOVETYPE_PUSH na SOLID_BBOX. Pr贸bowa艂em jeszcze SOLID_BSP z MOVETYPE_PUSHSTEP, ale wtedy serwer crashuje si臋 z b艂臋dem:

ERROR : SV_HullForBsp: Hit a solid_zone with no model (models/rpgrocket.mdl)

Model jest ustawiony byle jaki, ale jest - przez EngFunc_SetModel.

 

No i na tym b艂臋dzie si臋 zatrzyma艂em. Na czym polega ten b艂膮d? Jak go naprawi膰?

 

Ewentualnie, czy da si臋 rozwi膮za膰 ten problem z chodzeniem po entity w jaki艣 inny spos贸b?

Zauwa偶y艂em, 偶e stopie艅 w jakim kolizje si臋 glitchuj膮 jest zale偶ny od fps gracza - s膮 bardzo s艂abo widoczne przy 20 fps, prawie ich nie ma przy 40, ale potem problem staje si臋 mocno widoczny tym bardziej, im wi臋cej jest fps, tak gdzie艣 do 100-200. (dlatego pr贸bowa艂em zmienia膰 pev_nextthink)

 

Mam na serwerze najnowsze wersje wszystkiego, w tym regamedll i reapi.

 

A mo偶e da艂oby si臋 naprawi膰 ten bug w samym rehlds'ie? Mog臋 go edytowa膰, o ile ta zmiana nie b臋dzie wymaga艂a ingerencji u graczy. Czy kto艣 ma jak膮艣 wiedz臋 na temat tego problemu?

 


  • +
  • -
  • 0

#2 rzeznik9871

    Wszechwidz膮cy

  • U偶ytkownik

Reputacja: 82
Zaawansowany

  • Post贸w:270
Offline

Napisano 15.07.2024 19:55

Te偶 kiedy艣 to rozkminia艂em i nie doszed艂em dlaczego tak si臋 dzieje, ale doszed艂em do rozwiazania kt贸re jest banalnie proste. Ot贸偶 wystarczy... stworzy膰 by膰 przez engine a nie fakemete... serio, nie wiem co to zmienia ale tworz膮膰 byt przez create_entity() wszystko dzia艂a prawid艂owo


  • +
  • -
  • 0

Cze艣膰


#3 csMaster

    Wszechwiedz膮cy

  • Autor tematu
  • Power User

Reputacja: 14
Pocz膮tkuj膮cy

  • Post贸w:554
  • Lokalizacja:localhost
Offline

Napisano 15.07.2024 20:10

Zmieni艂em na create_entity() i wszystkie set_pev na entity_set_*. Ci膮gle jest tak samo. Je艣li stoj臋 na entity to wci膮偶 si臋 glitchuje. Tak jakbym spada艂 ca艂y czas do do艂u mimo 偶e stoj臋 na bycie, ale co jakie艣 0.1s przywraca mnie na poprzedni膮 pozycj臋 troch臋 wy偶ej. Chyba 偶e masz na my艣li ten problem z ustawieniem SOLID_BSP - to zaraz jeszcze sprawdz臋.

 

@Edit/ Dobra sprawdzi艂em. MOVETYPE_PUSHSTEP mo偶na ustawi膰, o ile model jest ustawiany po pev_movetype. Ale na SOLID_BSP i MOVETYPE_PUSHSTEP wci膮偶 entity znika. Tak jest na engine i na fakemecie. Tak偶e problem z giltchowaniem si臋 nadal jest i nie mam ju偶 za bardzo pomys艂u jak to rozwi膮za膰.


  • +
  • -
  • 0

#4 rzeznik9871

    Wszechwidz膮cy

  • U偶ytkownik

Reputacja: 82
Zaawansowany

  • Post贸w:270
Offline

Napisano 15.07.2024 20:23

Hmm jestem przekonany 偶e w艂a艣nie u偶ycie create_entity wystarczy艂o, ale sprawdz臋 to jeszcze jak wr贸ce do domu i dam zna膰.

Kojarz臋 te偶 co艣 偶e ma znaczenie kolejno艣膰 ustawiania modelu, originu i wielko艣ci bytu i co艣 mi 艣wita 偶e u偶yta艂em entity_set_size zamiast "r臋cznego" mins, maxs bo to te偶 powodowa艂o jakies problemy.


  • +
  • -
  • 0

Cze艣膰


#5 csMaster

    Wszechwiedz膮cy

  • Autor tematu
  • Power User

Reputacja: 14
Pocz膮tkuj膮cy

  • Post贸w:554
  • Lokalizacja:localhost
Offline

Napisano 15.07.2024 20:29

Teraz zauwa偶y艂em, 偶e chyba w og贸le zepsu艂em co艣 w kodzie i w og贸le ten entity nie dzia艂a. Czekaj, zobacze dok艂adniej. Mo偶e troch臋 za du偶o po艣piechu bo ju偶 z 5h pr贸buj臋 to rozwi膮za膰.

 

@Edit/ Nie no jak dla mnie to ten SOLID_BSP w og贸le nie dzia艂a.

Natomiast jak tak patrz臋, to nie wiem czy SOLID_BSP w og贸le mo偶na ustawia膰 mins i maxs.

vec3_t			mins, maxs;	          // only for non-bsp models

Og贸lnie nie chodzi mi o to 偶eby na si艂臋 u偶ywa膰 tego SOLID_BSP. Mo偶e by膰 nawet BBOX lub SLIDEBOX, ale 偶eby tych glitchy nie by艂o, bo strasznie 藕le to wygl膮da.

 

Mo偶e jednak da艂oby si臋 to zmieni膰 w rehlds'ie?

Og贸lnie nigdy wcze艣niej nie analizowa艂em jako艣 specjalnie tego kodu, wi臋c nie jestem pewien w kt贸rym miejscu jest fragment, kt贸ry odpowiada za kolizj臋 w ent'ami. Wst臋pnie znalaz艂em t膮 funkcj臋:

Spoiler

  • +
  • -
  • 0

#6 rzeznik9871

    Wszechwidz膮cy

  • U偶ytkownik

Reputacja: 82
Zaawansowany

  • Post贸w:270
Offline

Napisano 16.07.2024 20:31

Usiad艂em do tego wczoraj na 20 minut i faktycznie to co ci pisa艂em nie dzia艂a ;/ ale jestem pewny na 99,99% 偶e kiedys sie z tym upora艂em, jak znajde chwil臋 czasu w weekend i sam tego nie rozwi膮偶esz do tego czasu to jeszcze przysi膮d臋 do tematu.


  • +
  • -
  • 0

Cze艣膰


#7 csMaster

    Wszechwiedz膮cy

  • Autor tematu
  • Power User

Reputacja: 14
Pocz膮tkuj膮cy

  • Post贸w:554
  • Lokalizacja:localhost
Offline

Napisano 17.07.2024 13:31

A masz na my艣li 偶e rozwi膮za艂e艣 problem z tym glitchowaniem si臋 jak stoisz na entity?

 

No ja nie wiem, ca艂y czas zmieniam r贸偶ne rzeczy i dalej jest tak samo.

Na mapie na kt贸rej to sprawdzam, obok mojego entity jest drugi, b臋d膮cy elementem mapy. Ma SOLID_BSP i MOVETYPE_PUSH, nie ma origin, ale ma mins, maxs, absmin, absmax i size. Jak na nim stoj臋 to wszystko jest normalnie. Dos艂ownie wszystkie parametry EV_[INT/FL/VEC]_* przenios艂em na sw贸j entity. Nawet model da艂em *12 偶eby by艂o tak samo jak na tamtym i rezultat jest taki 偶e eel zaznacza mi tego entity 偶e jest w tym miejscu, ale mo偶na przez niego przechodzi膰 jakby go nie by艂o. Pr贸bowa艂em te偶 tamten entity b臋d膮cy cz臋艣ci膮 mapy zmienia膰, ustawi艂em mu SOLID_BBOX, MOVETYPE_FLY, zmienia艂em jakie艣 inne parametry takie jak EV_FL_renderamt, i ten ca艂y czas jest solidny, mo偶na po nim chodzi膰 i nic si臋 nie glitchuje mimo tych zmian. S膮 dwa identycznie ent'y obok siebie i jeden z nich dzia艂a a drugi nie...

 

Spoiler

 

I tak samo z engine:

Spoiler

  • +
  • -
  • 0

#8 csMaster

    Wszechwiedz膮cy

  • Autor tematu
  • Power User

Reputacja: 14
Pocz膮tkuj膮cy

  • Post贸w:554
  • Lokalizacja:localhost
Offline

Napisano 17.07.2024 16:08

Dobra jednak ju偶 znalaz艂em rozwi膮zanie.

 

1. Fakemeta ma jaki艣 problem z tymi solid i movetype. Czasami si臋 glitchuj膮 kolizje z entity, a czasami tych kolizji w og贸le nie ma. Engine jest bardziej pewny i stabilny.

2. Zmiana modelu entity powoduje wyzerowanie EV_FL_mins i EV_FL_maxs oraz EV_FL_size. Wymiary musz膮 by膰 ustawiane po przypisaniu modelu, a nie odwrotnie. Dotyczy to tylko tych dw贸ch warto艣ci, po艂o偶enia nie.

3. Ustawienie SOLID_BSP wymaga 偶eby model by艂 brush'em, w przeciwnym razie wywala serwer. Wtedy kolizje z entity s膮 uzale偶nione od modelu i nie da si臋 zmienia膰 rozmiar贸w (mo偶na zmienia膰 absmin i absmax i entity b臋dzie gdzie indziej, ale kolizje b臋d膮 tylko tam, gdzie model ma hitboxy).

4. SOLID_BBOX ewentualnie SOLID_SLIDEBOX jest do tego odpowiednie.

5. Dodanie EF_NODRAW do EV_INT_effects te偶 wydaje si臋 powodowa膰 艣cinki przy interakcjach z entity. Je艣li ma by膰 niewidoczny to lepiej go ukry膰 przez EV_INT_rendermode i EV_FL_renderamt.

Wyzerowanie EV_FL_renderamt powoduje, 偶e byt jest niewidoczny nawet na Software.

 

Wow, naprawd臋 nikt na amxx ani am przez tyle lat nie wpad艂 na to i nie chcia艂 si臋 podzieli膰 wiedz膮?


  • +
  • -
  • 0

#9 rzeznik9871

    Wszechwidz膮cy

  • U偶ytkownik

Reputacja: 82
Zaawansowany

  • Post贸w:270
Offline

Napisano 17.07.2024 20:11

Dobra jednak ju偶 znalaz艂em rozwi膮zanie.

 

1. Fakemeta ma jaki艣 problem z tymi solid i movetype. Czasami si臋 glitchuj膮 kolizje z entity, a czasami tych kolizji w og贸le nie ma. Engine jest bardziej pewny i stabilny.

Czyta艂em chyba na allied modders 偶e w engine funkcje aktualizuj膮ce informacje w silniku s膮 trzy

 

entity_set_origin

entity_set_model

entity_set_size

 

a w fakemecie tylko dwie

 

engfunc 

dllfunc

 

wiec wychodzi艂oby na to 偶e aby poprawnie zaktualizowa膰 dane w bycie po stronie klienta trzeba ich u偶y膰 zamiast set_pev... co by mog艂o wyjasnia膰 dlaczego fakemeta jest "bardziej niestabilna"

 

 

2. Zmiana modelu entity powoduje wyzerowanie EV_FL_mins i EV_FL_maxs oraz EV_FL_size. Wymiary musz膮 by膰 ustawiane po przypisaniu modelu, a nie odwrotnie. Dotyczy to tylko tych dw贸ch warto艣ci, po艂o偶enia nie.

Czyli tak jak pisa艂em wa偶na by艂a kolejno艣膰 ustawiania danych w bycie, ale nie by艂em 艣wiadomy tego 偶e po zmianie modelu _size si臋 zmienia, gratki za znalezienie tej zale偶no艣ci

 

 

 

3. Ustawienie SOLID_BSP wymaga 偶eby model by艂 brush'em, w przeciwnym razie wywala serwer. Wtedy kolizje z entity s膮 uzale偶nione od modelu i nie da si臋 zmienia膰 rozmiar贸w (mo偶na zmienia膰 absmin i absmax i entity b臋dzie gdzie indziej, ale kolizje b臋d膮 tylko tam, gdzie model ma hitboxy).

Fajna ciekawostka, tego nie wiedzia艂em

 

 

5. Dodanie EF_NODRAW do EV_INT_effects te偶 wydaje si臋 powodowa膰 艣cinki przy interakcjach z entity. Je艣li ma by膰 niewidoczny to lepiej go ukry膰 przez EV_INT_rendermode i EV_FL_renderamt.

Wyzerowanie EV_FL_renderamt powoduje, 偶e byt jest niewidoczny nawet na Software.

 

Zdaje mi si臋 偶e przy EF_NODRAW ent nie jest wysy艂any do gracza w addtofullpack wi臋c to by mia艂o sens, bo silnik po stronie gracza nie jest informowany 偶e w danym miejscu znajduje si臋 jaki艣 byt, ale te偶 trzeba to sprawdzi膰 偶eby potwierdzi膰

 

 

Wow, naprawd臋 nikt na amxx ani am przez tyle lat nie wpad艂 na to i nie chcia艂 si臋 podzieli膰 wiedz膮?

Du偶o jest tajemnic amxx/cs kt贸rych ludzie nie m贸wi膮 innym po rozkminieniu, niestety niekt贸rzy robi膮 jakie艣 dziwne sekrety z ciekawostek i mechnik rz膮dz膮cych 25 letnia gra...


U偶ytkownik rzeznik9871 edytowa艂 ten post 17.07.2024 20:22

  • +
  • -
  • 0

Cze艣膰


#10 csMaster

    Wszechwiedz膮cy

  • Autor tematu
  • Power User

Reputacja: 14
Pocz膮tkuj膮cy

  • Post贸w:554
  • Lokalizacja:localhost
Offline

Napisano 17.07.2024 21:41


Zdaje mi si臋 偶e przy EF_NODRAW ent nie jest wysy艂any do gracza w addtofullpack wi臋c to by mia艂o sens, bo silnik po stronie gracza nie jest informowany 偶e w danym miejscu znajduje si臋 jaki艣 byt, ale te偶 trzeba to sprawdzi膰 偶eby potwierdzi膰

 

Na to wygl膮da.

//Part of gamedll's code is moved here to decrease amount of calls to AddToFullPack()
//We don't even try to transmit entities without model as well as invisible entities
if (ent->v.modelindex && !(ent->v.effects & EF_NODRAW)) {
	qboolean add = gEntityInterface.pfnAddToFullPack(&curPack->entities[curPack->num_entities], e, &g_psv.edicts[e], host_client->edict, flags, FALSE, pSet);
	if (add)
		++curPack->num_entities;
}

Ale nie wiem jaki ma to wp艂yw na blokowanie si臋 dw贸ch entity. Widzia艂em 偶e w kodzie odpowiadaj膮cym za interakcj臋 mi臋dzy entity jest zmienna, kt贸ra wygl膮da jakby dotyczy艂a "widoczno艣ci" jednego entity przez drugi. Ale dok艂adnie nie sprawdza艂em co robi. Na pewno EF_NODRAW ma wi臋kszy wp艂yw na byty ni偶 kRenderTransAlpha, bo tylko w tym pierwszym przypadku wyst臋powa艂y glitche.
 

 


  • +
  • -
  • 0




U偶ytkownicy przegl膮daj膮cy ten temat: 0

0 u偶ytkownik贸w, 0 go艣ci, 0 anonimowych