Среда, 25.06.2025, 08:53
mods for garry's mod
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Мини профиль
Среда
25.06.2025
08:53

[ Управление профилем ]

часы

Мини-чат

Наш опрос
Те кто не зареганы на unet плохие люди?
1. да
2. я нехочу нарватся
3. нет
4. я ботинок
Всего ответов: 4

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » garry's mod [ Добавить статью ]

Expression 2
Expression 2
Синтаксис E2,сильно изменился по сравнению с E1,и нужно некоторое время,что бы к нему привыкнуть.

Данная версия E2 дает гораздо больше возможностей чем E1.

Всегда помните,что одной и той же цели можно добиться разными способами! Синтаксис Пример Упрощенный Вариант Описание

if () {} else {} if (A) {D=B} else {D=C} Если A - правда,тогда выполняется выражение {D=B},иначе выполняется {D=C}. Оператор else можно не использовать, например: if (A) {C=B} ~ if(~Time & Time == 0) {DO stuff} Изменилось ли значение во время выполнения? $ Opitch = Pitch + ($Pitch *3) Присваивает переменно Opich разницу между переменной Pitch и выражением Pitch*3. ++ if(Count == 2){Count++} Count = Count + 1 Делает +1 к значению данной переменной. -- if(Count == 3){Count--} Count = Count - 1 Делает -1 из значения данной переменной. += if(Count == 4){Count += 2} Count = Count + 2 Складывает число или переменную после += с данной переменной. -= if(Count == 5){Count -= 2} Count = Count - 2 Вычитает число или переменную после -= из данной переменной. ( ? : ) D=(A ? B : C) Если A - правда то переменной D присваивается значение переменной B иначе C.

Отличия E2 от E1

Синтаксис языка E2 очень похож на на E1,основные отличия вы можете увидеть ниже:

Expression 1 N@variable example I@A B O@C D = A + B D >= 4 & A -> C = 1; D < 4 -> C = 0;

Expression 2 @name variable example @inputs A B @outputs C @persist D D = A + B if(D >= 4 & A) { C = 1 } else { C = 0 }

Вы уже могли заметить новую строку @persist,она служит для переменных не отмеченных во входах или выходах,которые должны сохранять свое значение.

Данная строка была введена для того,что бы избежать ошибок в коде,так как в Е1 были только цифры и пакеты,

а в E2 есть много других видов данных (string,vector,и другие) ,так как компилятор теперь всегда дает знать об ошибках.

Новые Возможности @name vector example @inputs A:vector @outputs B:vector C = vec(0,0,0) if(A>C) {

B = A:normalized() * 4

} else {

B = C + A

}

Из за введения более удобной конструкции типа If Then Else,делать,условия ставло гораздо проще. Производительность

Были проведены тесты по скорости работы в Garry’s Mod, и вот,что получилось:

~3.000.000/s арифметических операций (+-*/) на цифрах, 2000 ops, 200 законченных действий за 0.13с

~850.000/s арифметических операций (+-*/) на векторах, 2000 ops, 200 законченных действий за 0.23с Горячие клавиши редактора

Ctrl-Space Проверить (и сдвинуть курсор к ошибке) Ctrl-S Сохранить Ctrl-Z Отменить последнее действие Ctrl-Y Вернуть последнее действие Ctrl-X Вырезать Ctrl-C Скопировать Ctrl-V Вставить Ctrl-Up Прокрутить Вверх Ctrl-Down Прокрутить Вниз Ctrl-Left Прокрутить Влево Ctrl-Right Прокрутить Вправо Функции Числа Описание

Числа и все о них..... КоммандыФункция Возврат Описание

abs(N) N - Возвращает модуль числа N. ceil(N) N - Округление аргумента в большую сторону. ceil(N,N) N - Округление Первого аргумента вверх,до Второго аргумента,с точностью до десятичных долей. floor(N) N - Округление аргумента в меньшую сторону. floor(N,N) N - Округление Первого аргумента вниз,до Второго аргумента,с точностью до десятичных долей. round(N) N - Округление аргумента до ближайшего целого числа. round(N,N) N - Округление Первого аргумента ,до Второго аргумента,с точностью до десятичных долей. int(N) N - Возвращает целую часть от аргумента. frac(N) N - Возвращает дробную часть от аргумента. mod(N,N) N - Возвращает остаток от деления Первого аргумента на Второй. clamp(N,N,N) N - Приводит аргумент 1 к интервалу между аргументом 2(Min) и аргументом 3(Max) sign(N) N - Возвращает знак аргумента (-1,0,1) [sign(N) = N / abs(N) ] min(N,N) N - Возвращает значение наименьшего аргумента(Два аргумента) min(N,N,N) N - Возвращает значение наименьшего аргумента(Три аргумента) min(N,N,N,N) N - Возвращает значение наименьшего аргумента(Четыре аргумента) max(N,N) N - Возвращает значение наибольшего аргумента(Два аргумента) max(N,N,N) N - Возвращает значение наибольшего аргумента(Три аргумента) max(N,N,N,N) N - Возвращает значение наибольшего аргумента(Четыре аргумента)

random() N - Возвращает случайное число,с плавающей запятой из промежутка от 0 до 1 [0 <= x < 1 ] random(N) N - Возвращает случайное число,с плавающей запятой из промежутка от 0 до значения аргумента [0 <= x < a ] random(N,N) N - Возвращает случайное число,с плавающей запятой из заданного интервала [a <= x < b ] randint(N) N - Возвращает случайное целое число из промежутка от 1 до аргумента [1 <= x <= a ] randint(N,N) N - Возвращает случайное целое число из указанного интервала [a <= x <= b ]

sqrt(N) N - Возвращает квадратный корень из аргумента cbrt(N) N - Возвращает кубический корень из аргумента root(N, N) N - Возвращает корень из Первого аргумента,в степени Второго аргумента

e() N - Возвращает постоянную Эйлера exp(N) N - Возвращает постоянную Эйлера в степени аргумента (Работает по данной формуле e()^N) ln(N) N - Возвращает натуральный логарифм аргумента log2(N) N - Возвращает логарифм аргумента на основании 2 log10(N) N - Возвращает логарифм аргумента на основании 10 log(N,N) N - Возвращает логарифм аргумента 1 на основании аргумента 2

pi() N - Возвращает число P toRad(N) N - Конвертирует градусы в радианы toDeg(N) N - Конвертирует радианы в градусы

sin(N) N - Возвращает синус от N градусов cos(N) N - Возвращает косинус от N градусов tan(N) N - Возвращает тангенс от N градусов asin(N) N - Возвращает арксинус от N градусов acos(N) N - Возвращает арккосинус от N градусов atan(N) N - Возвращает арктангенс от N градусов sinh(N) N - Возвращает гиперболический синус от N градусов cosh(N) N - Возвращает гиперболический косинус от N градусов tanh(N) N - Возвращает гиперболический тангенс от N градусов

sinr(N) N - Возвращает синус от N радиан cosr(N) N - Возвращает косинус от N радиан tanr(N) N - Возвращает тангенс от N радиан asinr(N) N - Возвращает инверсированый синус от N радиан acosr(N) N - Возвращает инверсированый косинус от N радиан atanr(N) N - Возвращает инверсированый тангенс от N радиан atanr(N,N) N ... sinhr(N) N - Возвращает гиперболический синус от N радиан coshr(N) N - Возвращает гиперболический косинус от N радиан tanhr(N) N - Возвращает гиперболический тангенс от N радиан

N - это число! Строки Описание

Новая интересная функция E2,это поддержка типа данных string(строки),которая позволяет производить управлять текстом Примеры кода

Пример от Hitman271 @name Example @inputs Tar:entity @outputs PosX PosY PosZ Name Health @outputs A:vector B:string C:string

interval(20)

A = Tar:pos() B = Tar:type() Health = Tar:health()

PosX = A:x() PosY = A:y() PosZ = A:z()

if ( Tar:isNPC() ) {

if (B == "npc_citizen" ) { Name = 1 }

if (B == "npc_combine_s" ) { Name = 2 }

if (B == "npc_zombie" ) { Name = 3 }

if (B == "antlion" ) { Name = 4 } } else { Name = 5 }

Комманды

Для типа данных "string" доступны операнды ==(равно) и !=(не равно),так есть специальный оператор объедения + ,тоесть "Wire"+"mod" == "Wiremod" Функция Возврат Описание

S:index(N) S - Возвращает Nную букву из строки в формате строк "lol":index(2) = "o" S:length() N - Возвращает длину строки S:upper() S - Делает все символы в верхнем регистре S:lower() S - Делает все символы в нижнем регистре S:sub(N,N) S - Возвращает часть строки, начинающеюся на значении первого аргумента и заканчивающеюся на значении второго S:left(N) S - Возвращает Nное количество символов из строки,начиная слева направо S:right(N) S - Возвращает Nное количество символов из строки,начиная справа налево S:find(S) N - Возвращает первое найденное совпадение строки S, 0 если не найдено

S:toNumber() N - Переводит строки в числа toString(N) S - Переводит числа в строки toByte(S) N - Возвращает ASCII код первого символа в строке toByte(S,N) N - Возвращает ASCII код указанного символа в строке

S - это строка! Вектор Описание

Все,что связано с типом данных vector в E2 Пример кода @name GPS @outputs X Y Z Pos:vector interval(100) Pos=entity():pos() X=Pos:x() Y=Pos:y() Z=Pos:z() Комманды

Операнды функций могут быть использованы с числами и векторами одновременно Функция Возврат Описание

vec() V - Создать нулевой вектор(0,0,0) vec(N,N,N) V - Создает вектор с указанными параметрами

V:length() N - Получить длину вектора V:length2() N - Получить длину вектора в квадрате V:distance(V) N - Получить дистанцию между векторами V:distance2(V) N - Получить дистанцию между векторами в квадрате

V:normalized() V - Получить нормализованный вектор V V:dot(V) N - Получить скалярное произведение вектора V:cross(V) V - Получить перекрестное произведение векторов V:rotate(A) V - Повернуть вектор на угол V:rotate(N,N,N) V - Повернуть вектор на (N,N,N) градусов(Pitch,Yaw,Roll)

V:x() N - Получить координату X вектора V V:y() N - Получить координату Y вектора V V:z() N - Получить координату Z вектора V V:setX(N) V - Задать координату X вектора V V:setY(N) V - Задать координату Y вектора V V:setZ(N) V - Задать координату Z вектора V

V:toAngle() A - Получить угол вектора V V:toString() S - Получить вектор в виде строки "[X,Y,Z]"

V:isInWorld() N - Возвращает 1 если вектор все еще находится в мире,иначе 0

Угол Описание

Позволяет делать различные операции с углами,такие как поворот,векторный поворот,указание углового вектора и т.д..Управляется не осями пространства(X,Y,Z),а осями поворота (Pitch,Yaw,Roll) которые управляют вращением объекта(или вектора)в определенном направлении пространства (X,Y,Z) КоммандыФункция Возврат Описание

ang() A - Создать нулевой угол ang(0,0,0) ang(N,N,N) A - Создать угол с заданными параметрами

angnorm(A) A - Получить нормализованный угол в виде Yaw,Pitch или Roll angnorm(N) N - Получить нормализованный угол в виде числа

A:pitch() N - Получить Pitch данного угла A:yaw() N - Получить Yaw данного угла A:roll() N - Получить Roll данного угла A:setPitch(N) A - Задать Pitch угла,возвращает угол A:setYaw(N) A - Задать Yaw угла,возвращает угол A:setRoll(N) A - Задать Roll угла,возвращает угол

A:toString() S - Получить угол в виде строки "[P,Y,R]" A:toVector() V - Трансформировать значения угла в значения вектора - (P,Y,R) -> (X,Y,Z)

Собственные функции Описание

Здесь всего 5 команд, на самом деле это все что может пригодится КоммандыФункция Возврат Описание

entity() E - Получить объект самого E2 concmd(S) - Выполнить строку в вашей консоли через E2 hint(S,N) - Показывает текст на вашем экране в виде ("Текст здесь",7), число 7 означает что вы будете видеть текст в течении 7 секунд (минимум 0,7, максимум 7)

applyForce(V) - Дает силу E2 по вектору V(Можно использовать вместо Вектор Трастера) applyOffsetForce(V,V) - Дает силу E2 по вектору V относительно вектора V1

Объекты Описание

Это новая функция для E2 позволяет получить подробную информацию об указаном объекте. Обьекты могут быть индетефицированы с помощью инструментов Target Finder,Entity Maker и даже собственной функцией E2 - entity() Из за того,что данные теперь можно получать напрямую в E2,в обход инструмента Beacon Sensor,производительность вычеслений была сильно увеличена

Комманды

Для данного типа данных используются только операнды ==(Равно) и !=(Не равно).Проверенный обьект будет возвращать true(1),когда комманды данного типа будут использоваться как выражение для определения параметра if(). Функции Возврат Описание

entity(N) E - Найти объект с номером N owner() E - Получить имя создателя объекта E:id() N - Получить номер указанного объекта

E:type() S - Получить класс объекта E:model() S - Получить модель объекта E:owner() E - Получить имя создателя объекта E:name() S - Получить имя игрока(Если объект игрок) E:steamID() S - Получить Steam ID игрока (Если объект игрок)

E:pos() V - Получить позицию объекта,возвращает вектор E:eye() V - Получить направление взгляда игрок(Если объект игрок),возвращает вектор E:shootPos() V - Получить направление оружия игрока(Если объект игрок),возвращает вектор E:aimEntity() E - Получить данные объекта на который на целен тестируемый объект,возвращает тип данных - объект E:aimPos() V - Получить точку на которую нацелен объект,возвращает вектор E:forward() V - Получить направление объекта вперед,возвращает вектор E:right() V - Получить направление объекта вправо,возвращает вектор E:up() V - Получить направление объекта вверх,возвращает вектор E:vel() V - Получить скорость объекта ,возвращает вектор E:velL() V - Получить скорость объекта относительно его самого,возвращает вектор

E:toWorld(V) V - Поворот локального вектора объекта до вектора в мире,возвращает вектор E:toLocal(V) V - Поворот мирового вектора объекта до локального вектора,возвращает вектор

E:angVel() A - Получить "Угловую" скорость объекта E:angles() A - Получить pitch, yaw и roll объекта

E:radius() N - Получить размер объекта(не точно,но полезно) E:height() N - Получить высоту игрок или NPC E:bearing(V) N - Получить направление(Bearing) объекта к вектору V E:elevation(V) N - Получить изменение(Elevation) высоты объекта на вектором V E:health() N - Получить кол-во здоровье объекта E:armor() N - Получить кол-во брони объекта(Только если объект игрок) E:mass() N - Получить вес объекта E:massCenter() V - Получить центр массы объекта в виде вектора E:massCenterL() V - Получить центр массы объекта относительно самого объекта E:setMass(N) - Задать вес объекта(От 0.001 до 50000)

E:applyForce(V) - Прикладывает силу к объекту по указанному вектору(Сила зависит от длины вектора,что бы увеличить силу -(E:applyForce(V*A) где А имеет нужное вам значение) E:applyOffsetForce(V,V) - Прикладывает силу к объекту по длине указанного вектора вектора 1, по направлению вектора 2 E:applyAngForce(A) Придает вращения с указанным углом объекту

E:isPlayer() N - Возвращает 1 если объект - игрок E:isOnFire() N - Возвращает 1 если объект горит E:isWeapon() N - Возвращает 1 если объект - оружие E:isNPC() N - Возвращает 1 если объект - NPC E:isVehicle() N - Возвращает 1 если объект - транспорт E:inVehicle() N - Возвращает 1 если объект(Игрок) в транспорте E:isWorld() N - Возвращает 1 если объект - мир E:isOnGround() N - Возвращает 1 если объект(Только игрок и NPC) стоит на земле E:isUnderWater() N - Возвращает 1 если объект под водо1 E:isPlayerHolding() N - Возвращает 1 если игрок держит данный объект E:isAlive() N - Возвращает 1 если объект(Игрок или NPC) жив E:isCrouch() N - Возвращает 1 если объект - игрок, присел

E:hintDriver(S,N) N -Отображает водителю тестируемой машины подсказку "S" на N секунд. E:driver() E - Возвращает данные водителя транспорта если таковой имеется,иначе 0 E:passenger() E - Возвращает данные пассажира,если в транспорте только 1 место то возвращает данные E:driver(),если в транспорт пустой возвращает 0 E:timeConnected() N - Возвращает время ,когда игрок присоединился к серверу E:lockPod(N) - 1 - закрыть транспорт,0 - открыть E:ejectPod() - Выкинуть игрока из транспорта E:killPod() - Убить игрока в транспорте

Таблицы Описание

Таблицы - отличный способ для хранения динамических переменных,больших обьемов данных и т.д. Таблица может быть хранилищем данных,где каждый бит записан определенной строкой.Строкой отмечает один из типов данных в таблице:вектор, число, угол, объект.

Таблицы могут быть скопированы с помощью комманды T=T:clone() написаной в конце кода E2. КоммандыФункция Возврат Описание

table() T - Создает пустую таблицу T:clone() T - Создает копию таблицы T:count() N - Возвращает номер яйчейки в таблице

T:number(S) N - Получить число из яйчейки таблицы,указанную заданной строкой.Возвращает 0 если яйчейка пустая. T:vector(S) V - Получить вектор из яйчейки таблицы,указанную заданной строкой.Возвращает 0 если яйчейка пустая. T:angle(S) A - Получить
Категория: garry's mod | Добавил: belo4nik (08.04.2011)
Просмотров: 8023 | Теги: e2, Wiremod
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Тэги

    Статистика

    Copyright MyCorp © 2025