Skocz do zawartości
wgnsy123

Komenda/funkcja przy obiekcie

Rekomendowane odpowiedzi

Witam. Chciałbym się was spytać, czy da radę zrobić coś takiego, że kiedy jesteśmy przy danym ID obiektu, np. jakimś tam: 3212 (randomowy) to mamy "pozwolenie" na wpisanie danej komendy? Albo ogólnie, jeżeli jesteśmy obok danego obiektu (którego postawimy gdzie tam chcemy) to możemy daną funkcję zrobić..

Edytowane przez wgnsy123

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Używasz streamera stworzonego przez Incognito? Jeśli tak, to możesz zrobić to w następujący sposób zakładając, że chodzi Ci o pojedyńczy obiekt.

Najpierw tworzysz zmienną globalną o nazwie na przykład areaX, a następnie tworzysz sferę, którą przypisujesz do tej zmiennej.

areaX = CreateDynamicSphere(pozycja_x, pozycja_y, pozycja_z, odleglosc);

pozycja_x, y i z zamień na koordynaty obiektu, a odleglosc możesz dać na np. 5.0 (może być dowolna, ale nie przesadź)

 

Następnie w callbacku OnPlayerEnterDynamicArea sprawdzasz, czy gracz znajduje się w tej sferze i wykonujesz jakąś tam funkcję.

public OnPlayerEnterDynamicArea(playerid, areaid)
{
    if(areaid == areaX)
    {
        // Jakaś tam funkcja czy coś
    }
}

Jak sama nazwa wskazuje ten callback wykonuje się, gdy gracz wejdzie do którejś ze wcześniej stworzonych sfer.

 

Jest również callback OnPlayerLeaveDynamicArea, który działa tak samo jak callback wyżej z tą różnicą, że wykonuje się, gdy gracz opuści sferę.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Z tego co zrozumialem to chodzi Ci o kazdy obiekt o konkretnym modelu. W takim przypadku mozesz (tak jak pisal Pawel) przy tworzeniu obiektu sprawdzac czy jest to ten model ktory Cie interesuje. Jesli tak to tworzysz nowa strefe i zapisujesz jej id do streamera za pomoca Streamer_SetIntData. Oprocz tego mozesz stworzyc iterator(biblioteka ysi) do ktorego bedziesz dodawac id tych stref. Potem w komendzie za pomoca foreach po utworzonym iteratorze sprawdzasz funkcja IsPlayerInDynamicArea czy gracz znajduje sie w ktorejs ze stref. To jest jeden ze sposobow. Rownie dobrze mozna zrobic iterator na wszystkie obiekty, sprawdzac czy obiekt jest wczytany dla grqcza, potem czy jego model sie zgadza, a na koncu odleglosc od obiektu(za pomoca funkcji streamera).

Pisalem z glowy, wiec nazwy funkcji moga sie roznic od tego co napisalem.

Edytowane przez Viral

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×