Expression 2 чипы не работают
@name Music FTT Player
@persist I Holo Name:string
@persist T
interval(100)
Ic= 24
E=entity()
T=(T-1)%-360
E2=»expression 2/cog_prop»
Name=»Music FTT Player»
setName(Name)
holoCreate(25,E:toWorld(vec(0,0,4.7)),vec(0.75,2.4,0.7),E:toWorld(ang(0)),vec(),»»)
holoColor(25,hsv2rgb(T,1,1))
holoDisableShading(25,1)
holoParent(25,E)
FFT = E:soundFFT(«GG»)
S = FFT:number(I)
for(I=1,Ic)
<
holoCreate(I)
holoModel(I,»models/holograms/rcube_thin.mdl»)
holoPos(I,E:toWorld(vec(0,9-Ic+I*1.19,10+FFT[I,number]/5)))
holoScale(I,vec(0.1,0.1,0.1))
holoColor(I,vec(2*FFT[I,number]*2,2*FFT[I,number]/5,2*FFT[I,number]*5))
holoDisableShading(I,1) setName(Name+» By Rey»)
print(«https://steamcommunity.com/groups/vegaserv»)
>
Олег,
@name Help_Holo
@persist [E O Base]:entity
@persist Table:table N White:array
E = entity()
O = owner()
Base = holoCreate(0, E:toWorld(vec(0,0,0)), vec(1), ang(0,0,0), vec(255), «»)
#Holo
Table:pushArray(array(Base:toWorld(vec(0,0,50)), vec(1,1,1), Base:toWorld(ang(0,0,0)), vec(255), «»))
N++
local Holo = Table[N, array]
holoCreate(N, Holo:vector(1), Holo:vector(2), Holo:angle(3), Holo:vector(4), Holo:string(5))
holoMaterial(N, Holo:string(6))
holoAlpha(N,255)
if(changed(O:keyPressed(«B»))&O:keyPressed(«B»)) <
L=toChar(34) #»
Pos = round(Base:pos() — O:aimEntity():pos())
FixPos = vec(-Pos:x(), -Pos:y(), -Pos:z())
Ang = round(O:aimEntity():angles())
#FixAng = ang(Ang:pitch(),Ang:yaw(),Ang:roll())
Model = L+O:aimEntity():model()+L
Material = L+O:aimEntity():getMaterial()+L
StPos = toString(FixPos):replace(«[«,»»):replace(«]»,»»)
StAng = toString(Ang):replace(«[«,»»):replace(«]»,»»)
print(«Table:pushArray(array(Base:toWorld(vec(«+StPos+»)),vec(1),Base:toWorld(ang(«+StAng+»)),vec(255),»+Model+»,»+Material+»))»)
>
Источник
Expression 2 чипы не работают
1,919 | уникальных посетителей |
62 | добавили в избранное |
Если вы еще ни разу не работали с wire и не знаете где его найти, то тут для вас.
Я, когда только начинал, тоже не знал где это находится.
Выбрав инструмент expression 2, нажатием ПКМ’ом по земле, вы откроете редактор. Его также можно открыть с помощью кнопки «Open editor», находящаеся внизу вкладки.
Если вы решили впервые изучить Е2, то вам нужно знать как с ним работать. Опишу суть интерфейса, чтобы вам, дорогие читатели, было знать куда тыкать и про что я буду говорить.
Ну штош, приступим.
Перед вами скриншот редактора. На нем цифрами обозначены элементы, их описание под скриншотом.
Полезный помощник по Е2, в нем содержатся все функции, вы можете искать их, введя начало в 1 поле. 2 остальных поля для потребляемых функцией данных.
На языке разметки EGP прайслистов программирования Expression 2 есть несколько типов данных, которые легко запомнить и нужно обязательно, как я уже говорил ранее, запомнить.
Функции всем нужны. Без них никуда. Функции — 90% этого Е2 .
Обычные функции обозначаются светло-голубым цветом, после окончания названия функции идут скобки, которые собирают внутрь данные для работы с этой самой функции. Скобки могут быть пустыми, они могут просто показывать, что это функция.
При написании функции обязательно должен сохраняться регистр, одна заглавная буква или маленькая не там — чип выведет Вам ошибку. (см. скриншот)
Как я говорил ранее, чтобы не допустить ошибок, необходимо соблюдать регистр. Обычно, если вы допустили ошибку в регистре, вам подсветит всю функцию светло-голубым, кроме буквы, где вы допустили ошибку. Ее цвет будет красным. (см. скриншот)
Ошибки можно получить многими способами, самый частые из них —
- Забытие данных, что нужно вписать в функцию.
- Орфографическая ошибка.
- Ошибка в регистре.
- Забытие дописать скобку.
- и много еще причин ошибок.
Система Е2 не сможет активировать чип с любой из перечисленных выше ошибок (и не только).
Вы сможете проверить ошибки, нажатием на кнопку 5.2. Если допущена ошибка, то кнопка поменяет цвет на красный, система переставит курсор на место с ошибкой, а на кнопке появится информация о ошибке.
Да, как вы догадались owner() это владелец чипа. Эта функция возвращает entity владельца, игрока. E:keyJump(), возможно вы тоже догадались, эта функция возвращает 1, если entity нажимает пробел. print хорошая функция везде. Она отображает сообщение в чате только для вас с заданной string, здесь это «Bump!».
Кстати, знали ли вы, что переменные типа string, могут хранить в себе не только английский текст? В string можно разгрузить любой текст, хоть русский.
Сложно? Давайте чего нибудь сделаем полегче.
Как вы видите, здесь мы использовали новый элемент синтаксиса else.
Это означает «иначе», то есть, например: если А равна 5 то сделать то-то, а вот если не равна, то сделать другое. Используется только после if()<>.
Небольшая таблица основных элементов синтаксиса. Советую запомнить.
Источник
Expression 2 чипы не работают
E=entity():isWeldedTo()
Holoref=holoEntity(2)
if(first())
<
runOnTick(1)
Red=random(255)
Blue=random(255)
Green=random(255)
E:setMass(50)
entity():setMass(50)
E:setAlpha(255)
if(E:type()!=»prop_vehicle_prisoner_pod»)
<
print(«You must spawn the Chip on a seat»)
selfDestructAll()
>
holoCreate(1)
holoCreate(2)
holoCreate(3)
holoCreate(4)
holoCreate(5)
holoCreate(6)
holoCreate(7)
holoCreate(8)
holoCreate(9)
holoCreate(10)
holoCreate(11)
holoCreate(12)
holoCreate(13)
holoParent(1,E)
holoParent(2,E)
holoParent(3,E)
holoParent(4,E)
holoParent(5,E)
holoParent(6,E)
holoParent(7,E)
holoParent(8,E)
holoParent(9,E)
holoParent(10,E)
holoParent(11,E)
holoParent(12,E)
holoParent(13,E)
holoModel(1,»cube»)
holoModel(2,»cube»)
holoModel(3,»pyramid»)
holoModel(4,»tetra»)
holoModel(5,»cube»)
holoModel(6,»hq_cone»)
holoModel(7,»cube»)
holoModel(8,»hq_cylinder»)
holoModel(9,»hq_cylinder»)
holoModel(10,»hq_cylinder»)
holoModel(11,»hq_cylinder»)
holoModel(12,»hq_cylinder»)
holoModel(13,»hq_cylinder»)
holoPos(1,E:toWorld(vec(0,0,0)))
holoPos(2,E:toWorld(vec(0,5,0)))
holoPos(3,E:toWorld(vec(0,-80,0)))
holoPos(4,E:toWorld(vec(0,-100,18)))
holoPos(5,E:toWorld(vec(0,-100,0)))
holoPos(6,E:toWorld(vec(0,55,0)))
holoPos(7,E:toWorld(vec(0,60,0)))
holoPos(8,E:toWorld(vec(0,40,-10)))
holoPos(9,E:toWorld(vec(-10,-30,-15)))
holoPos(10,E:toWorld(vec(10,-30,-15)))
holoPos(11,E:toWorld(vec(-20,-30,-30)))
holoPos(12,E:toWorld(vec(20,-30,-30)))
holoPos(13,E:toWorld(vec(0,40,-30)))
holoAng(1,E:toWorld(ang(0,0,0)))
holoAng(2,E:toWorld(ang(0,0,0)))
holoAng(3,E:toWorld(ang(0,0,90)))
holoAng(4,E:toWorld(ang(0,180,-10)))
holoAng(5,E:toWorld(ang(0,0,0)))
holoAng(6,E:toWorld(ang(0,0,-90)))
holoAng(7,E:toWorld(ang(0,0,0)))
holoAng(8,E:toWorld(ang(0,0,0)))
holoAng(9,E:toWorld(ang(45,0,0)))
holoAng(10,E:toWorld(ang(-45,0,0)))
holoAng(11,E:toWorld(ang(90,0,0)))
holoAng(12,E:toWorld(ang(90,0,0)))
holoAng(13,E:toWorld(ang(90,0,0)))
holoScale(1,vec(17,3,0.15))
holoScale(2,vec(2,7,2))
holoScale(3,vec(2,2,8))
holoScale(4,vec(0.5,2,3))
holoScale(5,vec(5,2,0.15))
holoScale(6,vec(2,2,2))
holoScale(7,vec(0.3,0.1,3))
holoScale(8,vec(0.2,0.2,3))
holoScale(9,vec(0.2,0.2,3))
holoScale(10,vec(0.2,0.2,3))
holoScale(11,vec(1,1,0.5))
holoScale(12,vec(1,1,0.5))
holoScale(13,vec(1,1,0.5))
holoColor(1,vec(Red,Green,Blue))
holoColor(2,vec(Red,Blue,Red))
holoColor(3,vec(Red,Green,Blue))
holoColor(4,vec(Red,Green,Blue))
holoColor(5,vec(Red,Green,Blue))
holoColor(6,vec(Red,Green,Blue))
holoColor(7,vec(75,75,75))
holoColor(8,vec(75,75,75))
holoColor(9,vec(75,75,75))
holoColor(10,vec(75,75,75))
holoColor(11,vec(0,0,0))
holoColor(12,vec(0,0,0))
holoColor(13,vec(0,0,0))
holoDisableShading(4,1)
>
entity():setMass(0)
E=entity():isWeldedTo()
E:setMass(50000)
Chair=entity():isWeldedTo()
Driver=Chair:driver()
W=Driver:keyForward()
S=Driver:keyBack()
Rvel=E:angVel():roll()
Pvel=E:angVel():pitch()
Yvel=E:angVel():yaw()
Pd=E:angles():pitch()/100
R1=E:angles():roll()/100
Range=rangerOffset(100,E:pos()+vec(0,0,-8),-E:up())
Height=Range:distance()
E:applyForce(-E:vel()*E:mass())
E:ap
Источник
Expression 2 чипы не работают
3,177 | уникальных посетителей |
145 | добавили в избранное |
Есть три типа EGP: это Screen, Emitter и HUD. Отличаются они только местом расположения в игре. Screen отображается непосредственно на экране, который вы создали, Emitter — как бы проецирует плоскую картинку в пространстве, а HUD, как ясно из названия, отображается прямо на экране у игрока, при этом его может видеть только этот игрок.
Далее представлены картинки, чтобы было понятнее.
- Индексы начинаются с 1 и заканчиваются максимальным количеством объектов (300 по умолчанию). Если вы попробуете создать объект с индексом, выходящим за эти пределы, то значение будет изменено так, чтобы оно находилось в диапазоне. То есть, если сделать объект с индексом 0, то его индекс станет равным 1. А это значит, что если у вас уже был объект с индексом 1, то он перезапишется последним созданным объектом с индексом 1. Поэтому будьте внимательны!
- Чтобы использовать EGP HUD, нужно для начала что-либо нарисовать через чип, а потом нажать на EGP HUD кнопкой «Использовать» (E по умолчанию).
- EGP HUD имеет вход, чтобы переключаться между разрешением 512х512 и разрешением вашего экрана (по умолчанию стоит разрешение вашего экрана)
-
- Список доступных шрифтов:
- WireGPU_ConsoleFont
- Coolvetica
- Arial
- Lucida Console
- Trebuchet
- Courier New
- Times New Roman
- ChatFont
- Marlett
Готово. Теперь осталось только подключить через Wire Advanced ко входу Wirelink чипа выход EGP HUD’a, нажать на HUD кнопкой «Использовать» (по умолчанию E) и, если понадобится, обновить чип левым кликом мыши.
Должен получиться такой спидометр:
Попробуйте походить, побегать, полетать в ноклипе и посмотрите на отклонение стрелки, все должно прекрасно работать!
Кстати, совершенно внезапно я обнаружил, что если вы падаете с ускорением и стрелка находится в желтой или красной зоне во время приземления, то игрок гарантированно получит урон.
[Upd. 20.01.2016] Пример радара на EGP HUD
Еще один небольшой пример. Теперь мы делаем радар, реагирующий на игроков и пропы. Условия реагирования указаны в начале кода, их можно поменять в любое время. Также я не стал заморачиваться и поставил runOnTick, хотя его можно заменить на interval, чтобы чип меньше затрачивал ресурсов компа, но при этом скорость его работы упадет.
Получится такой радар. Он поворачивается при повороте самого игрока и объекты правильно отображаются относительно него.Подключается чип к EGP точно так же, как и спидометр из предыдущего примера.
В будущем планируется добавить больше примеров
Вот и весь гайд. Надеюсь, вы поняли, что EGP — это очень просто!
Буду рад, если оцените руководство и прокомментируете его, укажете на недочеты или предложите примеры либо дополнительные пояснения/разделы, которые можно написать по этой теме.
Добавляйте руководство в избранное, чтобы иметь быстрый доступ к функциям работы с EGP прямо во время игры!
Подписывайтесь, чтобы получать оповещения о моих свежих руководствах!
Источник