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

Drzwi nie otwierane


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

#1 Kmf!p

    Wszechwidzący

  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 14.03.2014 14:52

Siema.

mam cos takiego:

if(find_sphere_class(id, "func_wall", 200.0, entlist, 2))

1. czemu mi nie dziala to na drzwi na dd2 ? jak zrobic zeby sprawdzic czy w poblizu niema drzwi lub sciany. 

2. jak sprawdzic czy nad glowa gracza jest sufit lub czy gracz jest na zewnatrz budynku.


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

    Volenti non fit iniuria

  • Power User

Reputacja: 391
Wszechpomocny

  • Postów:878
  • GG:
  • Imię:Sebastian
  • Lokalizacja:Mogilno
Offline

Napisano 14.03.2014 15:10

Daj całą funkcję


  • +
  • -
  • 0

Sell - System Klanów (wojny, top15 etc)

 

Kontakt GG: 7285018


#3 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 14.03.2014 15:13

to cala ;P

 

new entlist[3];
if(find_sphere_class(id, "func_wall", 200.0, entlist, 2))
{
client_print(id, print_chat, "Jestes zbyt blisko sciany");
return PLUGIN_CONTINUE;
}

 


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

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 14.03.2014 17:10

ad 1. Drzwi nie są ścianą. Drzwi możesz wyłapać poprzez func_door (przesuwane) oraz func_door_rotating (obracane, skrzydłowe itp).

ad 2. idź w górę i szukaj sufitu, jeśli znajdziesz koniec mapy, a nie znajdziesz sufitu - gracz jest na otwartej przestrzeni. Może to niestety dawać fałszywe wyniki np na cs_italy w tunelu gdy gracz stoi pod świetlikiem, może to się różnie zachować. Innej metody nie ma, nie da się sprawdzić też czy gracz jest w zamkniętej przestrzeni/wewnątrz budynku itp.
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#5 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 14.03.2014 19:27

1. no wiem ze tamte drzwi moge wylapac tak, ale skoro te drzwi nie sa sciana to czym sa ? czy nie da sie tego przechwycic.

2. a jak znajde koniec mapy ? ale cos mi sie zdaje ze to sporo kodu bedzie tym sposobem wiec raczej odpada. mi bardziej chodzi czy np. nad glowa jest pusto w odleglosci X

3. to moze jest jakis sposob czy w promieniu X wokol gracza jest pusto. jak cos jest np. sciana to blokuje wykonanie sie funkcji.

 

moze kawalek jakiegos kodu co moglo by mi pomoc?

cos takiego znalazlem, ale jak to uzyc.

CONTENTS_EMPTY

Użytkownik Kmf!p edytował ten post 14.03.2014 19:34

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

#6 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 14.03.2014 20:16

if(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_EMPTY)

To sprawdza czy dany punkt jest pusty. Tzn nie ma ściany, wody itd. Gracz i chyba wszystkie enty liczą się jako empty

 

Co do drzwi na dd2 to nie jest func_wall prawdopodobnie. Tylko po prostu ściana, a nie byt.


  • +
  • -
  • 0

#7 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 14.03.2014 20:33

ale jak to zastosowac? bo chyba tak nie da rady:

new Float:vOrigin[3];
pev(id, pev_origin, vOrigin);
if(engfunc(EngFunc_PointContents, vOrigin) != CONTENTS_EMPTY)
{
client_print(id, print_chat, "Jestes zbyt blisko");
return PLUGIN_CONTINUE;
}

mowisz dany punkt ale to sprawdza w promieniu czy po nacelowaniu?


Użytkownik Kmf!p edytował ten post 14.03.2014 20:39

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

#8 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 14.03.2014 22:34

Dany punkt.

new const Float:g_fDist = 17.0;

public CheckAround(id)
{
	new Float:vOrigin[3], Float:vOriginNew[3];
	pev(id, pev_origin, vOrigin);
	
	vOriginNew[0] = vOrigin[0] + g_fDist;
	vOriginNew[1] = vOrigin[1];
	vOriginNew[2] = vOrigin[2];
	
	if(IsEmpty(vOrigin))
		return 1;
	
	vOriginNew[0] = vOrigin[0] - g_fDist;
	
	if(IsEmpty(vOrigin))
		return 1;
	
	vOriginNew[0] = vOrigin[0];
	vOriginNew[1] = vOrigin[1] + g_fDist;
	
	if(IsEmpty(vOrigin))
		return 1;
	
	vOriginNew[1] = vOrigin[1] - g_fDist;
	
	if(IsEmpty(vOrigin))
		return 1;
	
	return 0;
	
}

public bool:IsEmpty(Float:vOrigin[3])
	return bool:(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_EMPTY);
	

To sprawdzi mniej więcej okolicę wokół gracza. Funkcja CheckAround zwróci 1 jeśli gracz stoi centralnie przy ścianie (Dotyka ściany i ściana nie jest na ukos)


  • +
  • -
  • 1

#9 Kmf!p

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:274
  • Lokalizacja:knyszyn
Offline

Napisano 15.03.2014 01:34

poradzilem juz se znalazlem cos takiego mniej wiecej to samo:

 
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
if(!czyDuzoMiejsca(origin, 150.0))
{
client_print(id, print_center, "Zbyt waskie przejscie!");
return PLUGIN_CONTINUE;
}
czyDuzoMiejsca(const Float:vfPunkt[3], Float:odleglosc){
    new Float:vfStart[3], Float:vfEnd[3];
    
    vfStart[0] = vfEnd[0] = vfPunkt[0];
    vfStart[1] = vfEnd[1] = vfPunkt[1];
    vfStart[2] = vfEnd[2] = vfPunkt[2];
    
    //1
    vfStart[0] += odleglosc;
    vfEnd[0] -= odleglosc;

    if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
    && engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
        return 0;

    
    //2
    vfStart[0] -= odleglosc;
    vfEnd[0] += odleglosc;
    vfStart[1] += odleglosc;
    vfEnd[1] -= odleglosc;
    
    if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
    && engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
        return 0;

    return 1;
}

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