@name
@persist T X Y Z E:entity Radius
Radius = 100
E = owner()
T = T+1
X = sin(T) * Radius
Y = cos(T) * Radius
Z = E:pos():z() + 50
holoCreate(1)
holoPos(1,vec(E:pos():x() + X,E:pos():y() + Y,Z))
holoModel(1,"icosphere3")
holoColor(1,vec(200,0,230))
interval(100)
ЭТОТ КОД ПИШЕМ В E2 ОН НАХОДИТЬСЯ DATA ПОТОМ E2 ДЕЛАЕМ БЛОКНОТ ПИШЕМ КОД =)))
Собственно как все это чудо работает? Буду читать(именно читать) код.
Название чипа - голограмма, ЭдиторРУС
Переменные - T(Отвечает за цикличность), X(локальная координата по Х), Y(локальная координата У), Z(З), Radius(Радиус от центра, до любого места на краю окружности), E:entity(инф. о игроке)
Radius = 100 - радиус равен 100 юнитам
E = owner() - находим игрока который поставил чип
T = T+1 - начинаем цикл
X = sin(T) * Radius - синус цикла(от 0 до бесконечности), значение синуса будет равняться от -1 до 1, перемноженного на радиус, и заносится в X(то есть если sin(1500) * 100 = -100 - значит будет локальная координата -100). Кстати по умолчанию будет использоваться градовая система.
Y = cos(T) * Radius - косинус цикла, значение будет равняться от -1 до 1, перемноженного на радиус, то есть если cos(1500) * 100 = 0, получается при значении синуса -100, и косинуса 0, на двухмерном пространстве, голограмма будет точно слева посередине. Далее sin(1550) * 100 ~ -70,710678, а cos(1550) * 100 ~ 70,710678, в результате голограмма будет точно сверху слева по диагонали. Итого математический маятник должен качнутся 100 единиц чтобы синус был равен 100, а косинус 0, потом(200 в синусе - 0), и в вниз -1.
Z = E:pos():z() + 50 - это координата высоты на которой находится игрок(внимание, world координата!) игрока, правда 50 тут добавляется потому что высотой является количество единиц высоты от центра карты до ног игрока, самого начала ног.
holoCreate(1) - полностью "сокращенная" команда, создает голограмму на месте чипа. Есть "полная" команда, в которой можно сразу все уместить, и не писать то что будет снизу, я не использовал полную команду, потому что полная может изменить только одну голограмму, какую впрочем и создает.
Синтаксис "полной":
InfoEntity=holoCreate(Index,Position,Scale,Angle,Color,Model)
InfoEntity - можно по желанию записать в переменную этого типа информацию о голограмме, тип возвращаемых данных Entity
Index - индекс голограммы, для дальнейшей работы, любое целое число
Position - позиция по X Y Z(Local), используется тип Vector
Scale - масштаб голограммы, используется Vector-нный тип, локальная координата, X Y Z.
Angle - угол наклона, используется особый тип данных - angle, наклон по X(Длина) Y(Высота) Z(Ширина)
Color - цвет по RGB системе, используется Векторнный тип, только не vec(X,Y,Z), а vec(R,G,B), прозрачность не указывается.
Model - модель голограммы, String тип, поэтому название модели закрывать кавычками, модели и их названия можно найти на сайте http://wiki.garrysmod.com/?title=Wire_Expression2#3D_Holograms
holoPos(1,vec(E:pos():x() + X,E:pos():y() + Y,Z)) - я рассказал про полную, это всего лишь замена Position, синтаксис:
HoloPos(Index,Position)
Зачем тут нужны координаты игрока? Да потому что в X и Y локальные координаты, а при указании позиции координаты будут использоваться как World.
##Остальные команды аналогичны переменным из "полного" варианта##
interval(100)
Частота повторения ВСЕГО кода. В миллисекундах.
Кстати не указывайте число ниже этого, потому что голограммы лагать будут, из-за частых расчетов. По-крайней мере у меня 2.66 GHz, лагает при 80 миллисекундах