Jump to content

[СКРИПТ] 3D Label (в разработке)


Recommended Posts

Описание:

Этот скрипт добавляет определённый функционал, которые позваляет создавать текст в игровом мире.

Скрипт не готов и на стадии разработки.

Функции:

createLabel3D

Cоздание надписи в определённых координатах мира. (server-side)

element createLabel3D(string text, int posX, int posY, int poZ, int distance) 

destroyLabel3D

Удалить надпись. (server-side)

bool destroyLabel3D(element label3D) 

attachLabel3DToElement

Прикрепление надписи к элементу. (server-side)

bool attachLabel3DToElement(element label3D, element toElement, int attachX, int attachY, int attachZ) 

deattachLabel3D

Открепляет надпись от элемента. (server-side)

bool deattachLabel3D(element label3D) 

 

getLabel3DAttach

Получает элемент к которому прикреплён, или false, если неприкреплён. (server-side and client-side)

element getLabel3DAttach(element label3D) 

setLabel3DParam

Изменить параметр надписи. (server-side)

bool setLabel3DParam(element label3D, string parameter, ...) 

getLabel3DParam

Получить значение параметра надписи. (server-side and client-side)

bool/int/string getLabel3DParam(element label3D, string parameter) 

Параметры для функций setLabel3DParam и getLabel3DParam:

  
Text - текст (string text); 
Font - шрифт надписи (string font); 
  
Position - позиция надписи (int X, int Y, int Z); 
Interior - интерьер надпииси (int interior); 
Dimension - измерение в котором будет находится надпись (int dimension);  
S-Distance - максимальное расстояние на котором будет видна надпись (int distance);  
Scale - размер текста (int scale) 
Color - цвет текста (int R, int G, int B); 
S-Color - цвет тени текста (int R, int G, int B); 
B-Color - цвет обводки текста (int R, int G, int B); 
  
Shadow - тень (bool true/false); 
Border - обводка (bool true/false); 
Scaling - масштабирование (bool true/false); 
Invis - прозрачность при отдалении от надписи (bool true/false); 
LOS - видна надпись через здания и объекты (bool true/false); 
  
  

Скриншоты:

06434bf1b009.jpg

8da39f29a9a6.jpg

cec1aa84eca6.jpg

10794b4f7533.jpg

b66e66ff1855.jpg

f20527f5528b.jpg

3f4ae5bca10f.jpg

Планируется:

- Ищем баги.

Скачать:

Download

Edited by Guest
Link to comment

Сделай лучше такой скрипт(просто предложение):

в гуи собираются координаты игрока(по нажатию на кнопку)

игрок вводит название текста.И выбирает цвет,нажимает на кнопку:Создать и он создаётся:D

Link to comment

Пойдёт любой шрифт созданый и работающий в dxDrawText, просто в setLabel3DFont пропиши элемент своего шрифта. :D

---

Всё, что планировал сделал. Подкидывайте идеи!

Link to comment
  • Other Languages Moderators
Пойдёт любой шрифт созданый и работающий в dxDrawText, просто в setLabel3DFont пропиши элемент своего шрифта. :D

---

Всё, что планировал сделал. Подкидывайте идеи!

Это я знаю, но ты отблегчи старания людям незнающим lua

Link to comment

читаю список в первом посте.. а как удалить лэйбл? Из добавочек - get/set цвета тени. Кстати, насчет тени, а можно сделать не тень, а обводку (как в сампе)? Просто обводка максимально отделяет весь текст от окружающего мира, а тень - только снизу и справа. Допустим, текст светло синий и непрозрачный и, если посмотреть на небо (схожий цвет), то текст как бы соединиться с небом. Ну кто играл в самп, поймет, там все тексты с обводкой темной и хоть куда смотри - всегда текст отделен полностью от игрового мира.

многие функции можно собрать вместе с разными параметрами:

..create.. ( tram, param, papam ) 
..set.. ( label, 'parameter', value ) 
..get.. ( label, 'parameter' ) 
..destroy.. ( label ) 

в зависимости от расстояния игрока до лэйбла, сам лэйбл масштабируется?

я много чего могу подсказать (: если есть желание это сделать

Link to comment
Кстати, насчет тени, а можно сделать не тень, а обводку (как в сампе)? Просто обводка максимально отделяет весь текст от окружающего мира, а тень - только снизу и справа. Допустим, текст светло синий и непрозрачный и, если посмотреть на небо (схожий цвет), то текст как бы соединиться с небом. Ну кто играл в самп, поймет, там все тексты с обводкой темной и хоть куда смотри - всегда текст отделен полностью от игрового мира.

Тени есть сразу. Я хотел сделать обводку, пока не знаю как. Да, я видел как в сампе.

сам лэйбл масштабируется?

Нет. Надо будет сделать функцию.

читаю список в первом посте.. а как удалить лэйбл?

Точно. Это фейл. :D

если есть желание это сделать

Желание есть. :)

Link to comment

mta_screen_2012_01_10_19_15_42.jpg

  
local screenWidth, screenHeight = guiGetScreenSize(); 
  
local X = screenWidth - 300; 
local Y = screenHeight / 2; 
  
-- 
  
dxDrawText( text, X + 1, Y + 1, screenWidth, screenHeight, -16777216, 1.0, ConsolaBold12 ); 
dxDrawText( text, X + 1, Y - 1, screenWidth, screenHeight, -16777216, 1.0, ConsolaBold12 ); 
dxDrawText( text, X - 1, Y - 1, screenWidth, screenHeight, -16777216, 1.0, ConsolaBold12 ); 
dxDrawText( text, X - 1, Y + 1, screenWidth, screenHeight, -16777216, 1.0, ConsolaBold12 ); 
dxDrawText( text, X, Y, screenWidth, screenHeight, -1, 1.0, ConsolaBold12 ); 
  

Вроде норм...

Link to comment

кстати, т.к. тени накладываются друг на друга, то цвет каждой из 4-х теней должен быть в 4 раза светлее. Этим мы добьемся, допустим, точно указанного цвета. Еще 1 плюс от такого наложения 4-х более светлых теней - получатся более мягкие скругленные углы обводки.

про сокращение кол-ва функций я уже выше писал вариант решения

слегка переименовал тему, не против?

Link to comment

Обновил первый пост.

Добавил новые скриншоты.

И так что же можно делать:

- Создать надпись в игровом мире. createLabel3D("Ваш текст", -720.0256, 952.820, 12.5621, 50.0)

- Прикрепить надпись к элементу со смещением по всем осям. (player, vehicle, object) attachLabel3DToElement(label, element, 0.0, 0.0, 1.5)

- Менять шрифт. setLabel3DParam(label, "Font", "pricedown")

- Менять текст. setLabel3DParam(label, "Text", "Ваш текст")

- Менять цвет. setLabel3DParam(label, "Color", 255, 0, 0)

- Менять цвет тени. setLabel3DParam(label, "S-Color", 0, 255, 0)

- Менять цвет обводки. setLabel3DParam(label, "B-Color", 0, 0, 255)

- Менять координаты. setLabel3DParam(label, "Position", -720.0256, 952.820, 12.5621)

- Менять интерьер. setLabel3DParam(label, "Interior", 1)

- Менять измерение. setLabel3DParam(label, "Dimension", 71)

- Менять дистанцию с которой будет видна надпись. setLabel3DParam(label, "S-Distance", 50.0)

- Менять размер шрифта. setLabel3DParam(label, "Scale", 1.5)

- Вкл. \ выкл. тень. setLabel3DParam(label, "Shadow", true)

- Вкл. \ выкл. обводку setLabel3DParam(label, "Border", true)

- Вкл. \ выкл. масштабирование при отдалении от надписи. setLabel3DParam(label, "Scaling", true)

- Вкл. \ выкл. прозрачность при отдалении от надписи. setLabel3DParam(label, "Invis", true)

- Вкл. \ выкл. видимость надписи через стены. setLabel3DParam(label, "LOS", true)

Link to comment
- Вкл. \ выкл. видимость надписи через стены. setLabel3DParam(label, "LOS", true)

Я думаю нужно больше параметров добавить к этой функции.

Я про то что можно настроить видимость через здания,машины,игроков и т.д

https://wiki.multitheftauto.com/wiki/ProcessLineOfSight :D

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...