←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Pobieranie maksymalnych wymiarów map/y


Najlepsza odpowiedź psilocybe 06.12.2014 22:36

Wyciągnij sobie z tego *.sma co potrzebujesz, a raczej usuń czego nie potrzebujesz.

 

Po co pisać coś co zostało już napisane i prawdopodobnie nie da się tego lepiej zrobić.

Przejdź do postu

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 04.12.2014

Czy istnieje funkcja/da się pobrać maksymalne wymiary mapy takiej jak np de_dust2 ?

 

Jeżeli mapa ma sztywnie ustaloną wielkość, i na każdej mapie jest taka sama, proszę o podanie wymiarów, aczkolwiek nie znalazłem na ten temat informacji :(

Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 04.12.2014

każda mapa ma teoretycznie wymiar -9999 do 9999 w trzech kierunkach(albo -5000 do 5000, ale raczej 9999), ale tylko mniejszy jej fragment to mapa, którą widzisz. Mapa na której znajduje się gracz to zamknięty fragment złożony ze szczelnie zamkniętej bryły mapy (ent o id 0) oraz entów i tu jej rozmiar jest zawsze znacznie mniejszy od możliwego. Czytałem gdzieś, że skompilowanie mapy teoretycznie o największych rozmiarach jest niewykonalne dla silnika.

 

Jakie dokładnie wymiary Ci potrzebne i do czego? Może być inny sposób pozyskania tych danych, ale musisz ładnie wytłumaczyć jakie niecne pomysły chodzą Ci po głowie.

Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 04.12.2014

Moje niecne pomysły dot. spawnowania randomowo bytów na mapie z org1 = random_num(wymiarmn,wymiarpl)

 

Potrzebuje pobierania do tego tych koordynatów, tak, bytu oteksturowanego "SKY"

 

Aby byty spawnowane były wew pomieszczenia "sky", mam już funkcje dzięki Twojemu "0" (dziękuje :)) usuwającą byt gdy spadnie na "sky" ale nie wiem jak sprawdzić czy byt ten jest poza, czy w środku "sky" (Tak wiem powtarzam się :) )

 

Czyżby origin z _Pev ?

Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 05.12.2014

mozesz z jakiegos bytu standardowego np info_player_start (miejsce spawnu) puscic traceline w gore to uzyskasz "spód" nieba.

Ja bym pewnie zrobił to tak:

menu do tworzenia "przestrzeni", ograniczone beampointami (tak jak tworzy sie strefy raszu)

zapis do pliku

spawny bytów w okreslonych przestrzeniach

 

To jest skuteczne rozwiązanie, ale nie dynamiczne, musisz ręcznie robic strefy dla kazdej mapy. Brak zrobionych stref=brak bytów.

Odpowiedz

  • +
  • -
psilocybe - zdjęcie psilocybe 05.12.2014

Przykładowa funkcja z pluginu który spawnuje w losowo wybranych miejscach enty (prezenty) :D

CheckPoints( Float:origin[ 3 ] )
{
	new Float:data[ 3 ], tr, point;

	data[ 0 ] = origin[ 0 ];
	data[ 1 ] = origin[ 1 ];
	data[ 2 ] = 99999.9;

	engfunc( EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr );
	get_tr2( tr, TR_vecEndPos, data );
	point = engfunc( EngFunc_PointContents, data );

	if ( point == CONTENTS_SKY && get_distance_f( origin, data ) < 250.0 )
		return false;

	data[ 2 ] = -99999.9;

	engfunc( EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr );
	get_tr2( tr, TR_vecEndPos, data );
	point = engfunc( EngFunc_PointContents, data );

	if ( point < CONTENTS_SOLID )
		return false;
	
	return true;
}

W tym pluginie są jeszcze funkcje typu "SetFloor", "CheckDistance", "CheckVisibility" i kilka innych. Plugin mam z hiszpańskimi komentami ale idzie się połapać.

Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 05.12.2014

//Działa w takim sensie, iż oznacza dany org jako zdatny lub też nie do użytku. ?

 

Aby nie otwierać nowego tematu, dało by się pobrać xmax i xmin z _pev z bytu "0" i ich uzyć ?

 

 


Użytkownik NoLiFeR edytował ten post 05.12.2014 13:30
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 06.12.2014

Pobranie pev z bytu 0 w najlepszym przypadku zwroci 0/-1 lub jakąś głupią wartość, w najgorszym dojdzie do crasha serwera.

Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 06.12.2014

Czyli najlepszym rozwiązaniem jest traceline i odległość od jakiegoś punktu np respa tt ?

Odpowiedz

  • +
  • -
Najlepsza odpowiedź psilocybe - zdjęcie psilocybe 06.12.2014

Wyciągnij sobie z tego *.sma co potrzebujesz, a raczej usuń czego nie potrzebujesz.

 

Po co pisać coś co zostało już napisane i prawdopodobnie nie da się tego lepiej zrobić.

Załączone pliki

Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 08.12.2014

Temat do zamknięcia, dzięki.

Odpowiedz