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

Widzenie enta


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 Kmf!p

    Profesjonalista

  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:211
  • Lokalizacja:knyszyn
Offline

Napisano 11.08.2016 17:19

Siemacie, mam taki problem uzywam czegos takiego:

fm_is_ent_visible(index, entity)

sprawdza to czy ent jest widzialny przez gracza, ja chce sprawdzic czy gracz widzi innego gracza:

fm_is_ent_visible(id, idattacker)

wszystko niby dziala lecz nie wykrywa calego modelu gracza, chodzi o to ze gdy zobacze glowe gracza to nadal nie wykrywa ze go widze ;( 

jak temu zaradzic ?

 

potrzebuje kod na ent w ktorym znajdzie sie gracz + bron (choc sam gracz wystarczy poki co)

mam nadzieje ze rozumiecie ;)


  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#2 rzeznik9871

    Profesjonalista

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:165
  • Lokalizacja:Skillersi.pl
Offline

Napisano 13.08.2016 16:13

Mozesz sprobowac to sprawdzic z engin'owego

 

 

is_visible(entity, target)

choc zakladam ze dziala to na takiej samej zasadzie

Drugia opcja to trace_line tez z engine

 

 

trace_line(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3])

nigdy tego nie uzywalem ale z tego co wywnioskowałem z tego tematu:

https://amxx.pl/topi...fikacja-entity/

w którym GoQ napisal

 

 

robisz traceline'a jesli gosc strzela w gracza amiedzy nimi jest twoj byt to blokujesz obrazenia i tyle

to mozna wykryc czy ent jest za sciana ale tez nie wiem czy dziala to tylko na inne enty czy takze na normalne "mapowe" sciany

jezeli dziala tak jakbysmy chcieli zeby dzialalo to mozna zrobic ta traceline od targetu do glowy/broni gracza i sprawdzic czy miedzy glowa/bronia a drugim graczem jest sciana

Jest jeszcze trzecie wyjscie najmniej optymalne czyli stworzyc nowy ent i umiescic go w glowie gracza a potem

 

 

if(fm_is_ent_visible(gracz1, gracz2) && fm_is_ent_visible(gracz1, ent_wglowie_gracza2))
{
 //KOD
}

 


  • +
  • -
  • 0

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png


#3 rzeznik9871

    Profesjonalista

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:165
  • Lokalizacja:Skillersi.pl
Offline

Napisano 13.08.2016 17:32

Nie moge edytowac wiec double post 

zrobilem taka funkcje 

 

public test(id)

{
new widziane[33],num
for(new i=1;i<33;i++)
if(is_user_alive(i))
{
new Float:fOrigin[3],Float:fOrigin2[3],Float:fOrigin3[3]
entity_get_vector(id,EV_VEC_origin,fOrigin)
entity_get_vector(i,EV_VEC_origin,fOrigin2)
if(trace_line(id,fOrigin,fOrigin2,fOrigin3))
{
widziane[num]=i 
num++
}
}
if(num)
for(new a=0;a<num;a++)
{
new name[30]
get_user_name(widziane[a],name,29)
client_print(id,3,"widzisz gracza %s",name)
}
}

i wszystko piknie dziala wyswietla wszystkich graczy ktorzy sa w zasiegu wzroku czyli wystarczy ze pobierzesz origin glowy gracza i sprawdzisz to tym sposobem :)


  • +
  • -
  • 0

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png


#4 Kmf!p

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:211
  • Lokalizacja:knyszyn
Offline

Napisano 13.08.2016 22:44

ale mi nie chodzi tylko o glowe, chodzi mi zeby pobrac taki origin ze jak za sciany bedzie widac noge, reke, glowe czy tez same nogi to zeby wykrylo czy go widze. kawalek modelu zobacze i juz ma wykonac sie jakis kod ;) uzywac będę raczej tego jesli zadziala na tym

fm_is_ent_visible(id, ent)

za ent chce podstawic wlasnie ten model gracza. myslalem tez nad takim czyms ale jak to pobrac dla gracza

entity_set_size(ent, Float:{-16.0,-16.0, -36.0}, Float:{16.0,16.0, 40.0});

chodzi mi zeby ustalic wysokosc gracza i szerokosc to juz metoda ostateczna, ale tez mogla by przejsc o ile dalo by sie zastosowac i pobrac jako ent


Użytkownik Kmf!p edytował ten post 13.08.2016 22:53

  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#5 rzeznik9871

    Profesjonalista

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:165
  • Lokalizacja:Skillersi.pl
Offline

Napisano 13.08.2016 22:52

wystarczy pobrac kilka miejsc i sprawdzic czy gracz nie widzie jednego z nich


  • +
  • -
  • 0

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png


#6 Kmf!p

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:211
  • Lokalizacja:knyszyn
Offline

Napisano 13.08.2016 22:59

moze byc te traceline.

czyli jak bedzie zeby pobrac wszystkie czesci ciala i zrobic z tego jeden ent ?

zebym mogl podstawic pod to:

fm_is_ent_visible(id, ent)

  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544

#7 rzeznik9871

    Profesjonalista

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:165
  • Lokalizacja:Skillersi.pl
Offline

Napisano 14.08.2016 00:47

cos tam mi sie udalo sklecic po wstepnych testach dziala ale wiadomo najlepiej przetestowac w praktyce tak btw do czego ci to potrzebne?

edit:jezeli masz server mozemy to przetestowac dokladniej bo wiadomo jak testuje sie na botach ;f a sam jestem tego ciekaw dogłębniej

stock czy_widzi_gracza(id,target)
{
	if(is_user_alive(target) && is_user_alive(id)) //sprawdzam czy obaj gracze zyja
	{
		new Float:fOrigin[3],Float:fOrigin2[3],Float:fOrigin3[3],Float:fOrigin4[3],Float:fOrigin5[3]//zmienna w ktore przechowywane sa originy
		,Float:fOrigin6[3],Float:fOrigin7[3],line[3];
			
		entity_get_vector(id,EV_VEC_origin,fOrigin) //Pobranie originu gracza1 do zmiennej fOrigin
		
		entity_get_vector(target,EV_VEC_origin,fOrigin2) //Pobranie originu gracza2 do zmiennej fOrigin2
		entity_get_vector(target,EV_VEC_origin,fOrigin3) //Pobranie originu gracza2 do zmiennej fOrigin3
		entity_get_vector(target,EV_VEC_origin,fOrigin4) //Pobranie originu gracza2 do zmiennej fOrigin4
		
		fOrigin[2]+=25.0 //origin gracza jest pobierany od brzucha a wiec ustawiam aby plugin bral pod uwage glowe gracza nie tłów poniewaz nie patrzymy tłowiem :0
		fOrigin2[2]+=25.0//robie to co wyzej ale dla targetu (gracz2) teraz ten origin symuluje glowe
		fOrigin3[2]-=25.0//a tu "obnizam" origin teraz to symuluje nogi a wlasciwie przestrzen miedzy nogami tak +-
		
		line[0]=trace_line(id,fOrigin,fOrigin2,fOrigin5)//sprawdzam czy symulowana glowa gracza1 widzi symulowana glowe gracza2
		line[1]=trace_line(id,fOrigin,fOrigin3,fOrigin6)//sprawdzam czy symulowana glowa gracza1 widzi symulowane nogi gracza2
		line[2]=trace_line(id,fOrigin,fOrigin4,fOrigin7)//sprawdzam czy symulowana glowa gracza1 widzi tłów gracza2 (standardowy origin)
		
		if(line[0]==target || line[1]==target || line[2]==target) //jezeli symulowana glowa gracza1 dostrzega nogi glowe lub tłów gracza2 wykonuje kod
			return true//zwracam true jezeli widzi okreslonego gracza (a wlasciwie jedna z jego czesci ciała)
	}
	return false//zwracam false jezeli nie widzi okreslonego gracza
}

Użytkownik rzeznik9871 edytował ten post 14.08.2016 01:07

  • +
  • -
  • 0

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png

b_350_20_692108_381007_FFFFFF_000000.png


#8 Kmf!p

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:211
  • Lokalizacja:knyszyn
Offline

Napisano 14.08.2016 22:05

Pisze plugin antywh powinien dzialac na wh podmieniajace opengl.dll a moze i inne tez (na pewno nie wszystkie) ale dobre i to ;P

Blokuje wysylanie informacji o graczu do momentu az przeciwnik zobaczy go czyli np. wyjdzie za sciany czy w inny sposob. uzywam tego

fm_is_ent_visible(id, ent)
fm_is_ent_visible(id, idattacker)

dziala prawie dobrze, ale model przeciwnika pojawia sie samo gdy zobaczymy jego brzuch, a dokladnie punkt na srodku jego brzucha bo model spoznia sie nie tylko gdy widzimy nogi/glowe, ale tez gdy wychyla np. zza rogu. najlepszym rozwiazaniem bylo by sprawdzanie czy hitboxy graczy widza sie...

 

Odnosnie postu wyzej nie widze roznicy po podstawieniu twojego kodu ;(


Użytkownik Kmf!p edytował ten post 14.08.2016 22:07

  • +
  • -
  • 0
b_350_20_FFAD41_E98100_000000_591F11.png

b_350_20_FFAD41_E98100_000000_591F11.png 

CodMod- 31.186.82.99:23510
Only Dust2- 31.186.82.99:23544




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

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