←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Model Placer - byty solidne również dla broni

  • +
  • -
Sooldierr's Photo Sooldierr 29.03.2015

Witam.

 

Jak zapewne wielu użytkowników plugimu:

 

http://amxx.pl/topic...7-model-placer/

 

wie, o ile postać gracza może stawać na wstawianych modelach przez plugin to dla broni są one przenikalne.

Wie ktoś jak rozwiązać taki problem?

Jak sprawić, aby wyrzucane bronie zachowywały się tak samo przy kontakcie z tymi modelami jak i z resztą ścian?

Quote

  • +
  • -
wiwi249's Photo wiwi249 29.03.2015

Przy tworzeniu bytu ustawiasz mu pev_solid na SOLID_BBOX ;)

Quote

  • +
  • -
Sooldierr's Photo Sooldierr 29.03.2015

A dokładniej w pluginie?

Bo z tego co patrzyłem to on ustawia SOLID_BBOX już

 

Ale pełno tak też sprawdzania warunków jest, gdzie pojawia się pev_solid  i tego już nie ogarniam, prawdopodobnie ustawia gdy bytem stykający się jest gracz.

A żeby dodać do tego gracz lub broń...

 

Poniżej fragmenty kodu:

setSolid(ent, model)<edit>{
#pragma unused model
	set_pev(ent, pev_solid, SOLID_BBOX);
}
setSolid(ent, model)<normal>{
	if(pev(ent, pev_iuser4))
		set_pev(ent, pev_solid, pev(ent, pev_iuser3));
	else
		set_pev(ent, pev_solid, ArrayGetCell(giSolid, model));
}
if(pev_valid(gLastEnt)){
	iTemp = str_to_num(szTemp);
		set_pev(gLastEnt, giPevs[param], iTemp);
			if(giPevs[param] == pev_solid){
				set_pev(gLastEnt, pev_iuser3, iTemp);
				set_pev(gLastEnt, pev_iuser4, 1);
				}
			}
		}
public editModeBegin(id)<normal>{
	state edit;
	
	new ent = -1;
	while((ent = find_ent_by_class(ent, gszClassname))){
		set_pev(ent, pev_solid, SOLID_BBOX);
	}
	
	forwardPreThink = register_forward(FM_PlayerPreThink, "fwPlayerPreThink", 1);
	
	client_print(id, print_chat, "%L", id, "EDITMODE_BEGIN");
}
public editModeEnd(id)<edit>{
	state normal;
	
	new ent = -1;
	new model;
	while((ent = find_ent_by_class(ent, gszClassname))){
		model = pev(ent, pev_body);
		if(pev(ent, pev_iuser4)) 
			set_pev(ent, pev_solid, pev(ent, pev_iuser3));
		else
			set_pev(ent, pev_solid, ArrayGetCell(giSolid, model));
	}
	
	unregister_forward(FM_PlayerPreThink, forwardPreThink, 1);
	
	client_print(id, print_chat, "%L", id, "EDITMODE_END");
	giChoosedEnts[id] = 0;
}

Co to jest:

pev_iuser1

pev_iuser2

pev_iuser3

pev_iuser4


Edited by Sooldierr, 29.03.2015 19:42.
Quote

  • +
  • -
wiwi249's Photo wiwi249 08.04.2015

To dodatkowe właściwości bytu, do których możesz przypisywać wartości, niektóre pluginy z tego korzystają, przydatne, gdy chcesz zapisać jakieś dane do konkretnego bytu. pev_iuser* to inty, a pev_fuser* to chyba floaty jak sie nie myle.

pev_iuser2, o ile sie nie myle, przechowuje id gracza którego obserwujemy (spect).

pev_fuser2 też ma swoje zastosowanie, zobacz http://amxx.pl/pevresearch#pev_fuser2

Quote

  • +
  • -
Sooldierr's Photo Sooldierr 10.04.2015

A reszta tych parametrów?

jeszcze są pev_euser'y

 

A generalnie ktoś wie jak wykonać to co opisałem w problemie?

Czy w pluginie określone jest zdarzenie, gdy byt broni ma kontakt z bytem modelu wstawianego poprzez Model Placer?

Wtedy wystarczyłoby poprawić, tak aby były względem siebie solid, "func_wall" czy coś tam.

A jeśli nie, to jak złapać zdarzenie lub ID bytu, które wchodzi w kontakt z bronią?

Quote

  • +
  • -
Sooldierr's Photo Sooldierr 18.04.2015

ktos umialby pomoc? Jest to plugin autorstwa jednego z forumowych majstrow, R3X'a. Albo nie jest ustawiony SOLID_BBOX dla 'weaponbox' albo dla broni to nie dziala i trzeba inaczej oszukac to np grawitacje wyzerowac dla broni przy kontakcie z modelem.
Quote

  • +
  • -
wiwi249's Photo wiwi249 19.04.2015

Jeszcze można określić rozmiar bytu (np entity_set_size). Próbowałeś?

Quote

  • +
  • -
Sooldierr's Photo Sooldierr 19.04.2015

Nie rozumiem, w jaki sposób miało by my to pomóc?

Czy masz na myśli, że broń nie ma rozmiaru i dlatego przelatuje przez te modele?

Quote

  • +
  • -
Sooldierr's Photo Sooldierr 19.04.2015

Udało mi się złapać event, gdy broń wchodzi w kontakt z modelami za pomocą funkcji:

register_touch("weaponbox","customone", "WeaponModel")

Teraz mam problem, co mogę zrobić z weaponbox, aby jakoś naturalnie się zachowywał do np skrzynek wstawianych przez Model Placer tak samo jak do skrzynek wbudowanych w mapę. Próbowałem nadać przeróżne MOVETYPE , nadawałem broni SOLID_BBOX . Ale przy nadawaniu movetype, broń jakoś albo odlatuje, odbija się mocno. Jak nadałem jej SOLID_BBOX to znieruchomiała w momencie kontaktu z Modelem i stała się bytem przenikalnym w powietrzu.

Quote

  • +
  • -
Puchate's Photo Puchate 22.04.2015


Teraz mam problem, co mogę zrobić z weaponbox, aby jakoś naturalnie się zachowywał do np skrzynek wstawianych przez Model Placer tak samo jak do skrzynek wbudowanych w mapę. Próbowałem nadać przeróżne MOVETYPE , nadawałem broni SOLID_BBOX . Ale przy nadawaniu movetype, broń jakoś albo odlatuje, odbija się mocno. Jak nadałem jej SOLID_BBOX to znieruchomiała w momencie kontaktu z Modelem i stała się bytem przenikalnym w powietrzu.

Weaponbox jest dość specyficzny w kwestii jego dotyku nawet na broniach które są wbudowane w mapę, więc może stąd też wynikają Twoje problemy. Jednak powinieneś jeszcze spróbować nadać tym entity rozmiar (size).
Quote

  • +
  • -
Sooldierr's Photo Sooldierr 22.04.2015

Ale dokładniej, jak mam to zastosować?

Quote

  • +
  • -
wiwi249's Photo wiwi249 25.04.2015

Pisałem wyżej, np entity_set_size albo pev_size jak sie nie myle.

Quote