Nazwa: Quis 3D Text Labels
Wersja: 1.1
Screeny: Screen 1 Screen 2 (zielona etykieta ma nadany indeks 1) Screen 3 (etykieta przyczepiona do naczepy)
Przydatne informacje: Utworzone etykiety są elementami MTA, tak samo jak praktycznie wszystko co istnieje w MTA, czyli gracze, pojazdy, pickupy i inne. Typ elementu, dla etykiety to "text3d".
Rozmiar tekstu dla każdej etykiety tekstowej jest skalowany w zależności od odległości od gracza. Im dalej, tym tekst będzie mniejszy.
Lista zmian w wersji 1.1:
poprawiono błąd, który powodował że nie dało się ustawić wartości "checkLOS" na false. Błąd ten został też poprawiony w wersji 1.0, godzinę po jej wystawieniu
dodano czarną obwódkę do etykiet, dla ładniejszego wyglądu
dodano funkcje attach3DTextLabel i detach3DTextLabel umożliwiające przyczepianie etykiet do innych elementów
dodano parametr "index" w create3DTextLabel
Lista funkcji (tylko server-side):
text3d create3DTextLabel( string text, float posx, float posy, float posz, [ int red = 255, int green = 255, int blue = 255, float drawdistance = 100.0, bool checkLOS = true, int index = 0 ] )
Tworzy nową etykietę tekstową i zwraca jej element. Funkcja automatycznie konwertuje wszystkie zmienne jeśli ich typ jest nieprawidłowy, jeśli konwersja się nie powiedzie, zwraca "false".
text - ciąg znaków, który będzie zawarty w etykiecie
posx - pozycja X etykiety
posy - pozycja Y etykiety
posz - pozycja Z etykiety
red - ilość koloru czerwonego w kolorze etykiety, domyślnie 255
green - ilość koloru zielonego w kolorze etykiety, domyślnie 255
blue - ilość koloru niebieskiego w kolorze etykiety, domyślnie 255
drawdistance - z jakiej odległości ma być widoczna etykieta, domyślnie 100.0
checkLOS - czy w przypadku generowania etykiety, ma być sprawdzana linia wzroku (Line-Of-Sight), tzn. czy etykieta nie jest za jakimś obiektem. Domyślnie true.
index - taki jakby priorytet, im wyższy indeks, tym etykieta będzie generowana "wyżej" na stosie. Tzn. jeśli w jednym miejscu na ekranie nakłada się kilka etykiet, to na wierzchu będzie ta z najwyższym indeksem.
bool set3DTextLabelText( text3d label, string text )
Zmienia tekst etykiety tekstowej. Zwraca true gdy operacja się powiedzie, false gdy podano nieprawidłowe parametry.
string get3DTextLabelText( text3d label )
Zwraca aktualny tekst zawarty w etykiecie tekstowej.
bool set3DTextLabelColor( text3d label, int red, int green, int blue )
Zmienia kolor etykiety tekstowej. Zwraca true gdy operacja się powiedzie, false gdy podano nieprawidłowe parametry.
int, int, int get3DTextLabelColor( text3d label )
Zwraca kolor etykiety tekstowej w postaci trzech liczb.
bool attach3DTextLabel( text3d label, element theElement, [ float offsetX = 0.0, float offsetY = 0.0, float offsetZ = 0.0 ] )
Przyczepia etykietę do innego elementu. Dane są konwertowane na prawidłowy typ, tak jak zawsze. Jeśli konwersja się nie powiedzie, funkcja zwraca "false", a w przypadku powodzenia "true".
label - etykieta tekstowa, która ma zostać doczepiona
theElement - element, do którego ma zostać doczepiona etykieta tekstowa
offsetX - odległość X względem pozycji elementu
offsetY - odległość Y względem pozycji elementu
offsetZ - odległość Z względem pozycji elementu
bool detach3DTextLabel( text3d label )
Odczepia etykietę tekstową od elementu, etykieta wraca na pozycję ustaloną przy jej tworzeniu. Zwraca "true" w przypadku powodzenia, "false" w przypadku błędu. Ta funkcja jest równoznaczna z:
attach3DTextLabel(label, nil)
Inne funkcje:
Ponieważ etykieta tekstowa jest elementem, działa na nią także mnóstwo innych funkcji, wbudowanych w MTA. Przykłady: destroyElement, getElementPosition, setElementPosition
Download:
Tym razem spakowałem dwa pliki .lua w archiwum ZIP, myślę że będzie to wygodniejsze od kopiowania. Wystarczy wgrać te pliki do zasobu w którym chcemy używać etykiet tekstowych, dodać dwie linijki w meta.xml, i już możemy cieszyć się nowymi funkcjami.
QuisTextLabels1_1.zip (Dropbox)
Wersja 1.0:
Kodu dużo nie ma, tak więc nie będę go nigdzie wstawiał. Skrypt można sobie wkleić do swojego zasobu, albo dodać jako nowy plik w istniejącym zasobie. Można też utworzyć całkiem nowy zasób, ale dostęp do funkcji będzie utrudniony (export).
Server-Side:
Client-Side:
Będę robił aktualizacje, nie jest to ostatnia wersja, tak więc możecie zgłaszać bugi i propozycje, będę wdzięczny
Miłej zabawy.