Целые (integer) и вещественные (float) числа
При выполнении простейших математических операций результат, как правило, имеет тот же тип, что и аргументы:
3 + 4 возвращает 7
3.0 + 4.0 возвращает 7.0

Однако, если совместно используется оба типа чисел, целое понимается как вещественное:
3 + 4.0 возвращает 7.0

Об этом очень важно помнить при операциях деления, сколько раз я забывал, делил одно целое число целое на другое, получал тоже целое и сильно удивлялся.

Переменные
Имя переменной должно начинаться с буквы или символа “_”. Ее значение – любое число, строка или выражение.
variable_name = variable_value --ПРИСВОЕНИЕ ПЕРЕМЕННОЙ ЗНАЧЕНИЯ
variable_name = "four" --СТРОКОВАЯ ПЕРЕМЕННАЯ
local y = 2, x --ОБЪЯВЛЕНИЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ (ДЕЙСТВУЮТ В ТЕКУЩЕМ БЛОКЕ - ВЫРАЖЕНИИ, ОГРАНИЧЕННОМ КРУГЛЫМИ СКОБКАМИ)
global bzzz --ОБЪЯВЛЕНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ (ДЕЙСТВУЮТ ВСЮ СЕССИЮ 3ds max)


Простейшие математические операторы и выражения
С числами
4/3 * pi * 2.5^3 --ФОРМУЛА ОБЪЕМА СФЕРЫ РАДИУСОМ 2.5. ВОЗВРАЩАЕТ 49.0874
3 as string --ВОЗВРАЩАЕТ “3”

Со строками
a = "MAXScript"; b = " FOREVER"
a + b --ВОЗВРАЩАЕТ “MAXScript FOREVER”
"3" as float --ВОЗВРАЩАЕТ 3.0
"3.56" as integer --ВОЗВРАЩАЕТ 3

Создание случайных чисел
Тип числа зависит от типа первого аргумента в операторе random.
random 1 100 --ВОЗВРАЩАЕТ СЛУЧАЙНОЕ ЦЕЛОЕ ЧИСЛО МЕЖДУ 1 И 100
random 1.0 100 --ВОЗВРАЩАЕТ СЛУЧАЙНОЕ ВЕЩЕСТВЕННОЕ ЧИСЛО МЕЖДУ 1 И 100
Числа будут одинаковыми всякий раз при перезагрузке 3ds max. Чтобы избежать этого, можно использовать оператор seed <number>, где <number> это любое целое или вещественное число. Пример: seed 5

Приращения
<переменная> += <выражение>добавляет <выражение> к переменной
<переменная> -= <выражение>вычитает <выражение> из переменной
<переменная> *= <выражение>умножает переменную на <выражение>
<переменная> /= <выражение>делит переменную на <выражение>
Поэтому запись x = x + 1 равносильна записи x += 1


Операторы сравнения
<compare_operand> == <compare_operand>оба операнда равны
<compare_operand> != <compare_operand>оба операнда не равны
<compare_operand> < <compare_operand>левый операнд меньше правого
<compare_operand> <= <compare_operand>левый меньше или равен правому
<compare_operand> > <compare_operand>левый операнд больше правого
<compare_operand> >= <compare_operand>левый больше или равен правому

Логические операторы
<logical_operand> and<logical_operand> истина, если истинны оба
<logical_operand> or<logical_operand> истина, если истинен хотя бы один
  not<logical_operand> истина, если операнд ложен

Управляющая конструкция if
if <if_expr> then <expr> [else <expr>]
if <if_expr> do <expr>
Результат выполнения выражения <if_expr> должен быть либо истиной (true), либо ложью (false).

Примеры:
if a > b and a < c do (print d; print t)
if a == b then c = 0
a = (if d == 0 then 0 else a / d)
if a > bthen
 (
 print c
 x = sqrt (c)
 )
else(print d; x = sin (e))

Выражения, находящиеся внутри круглых скобок, образуют блок. Значение последнего выражения в блоке является значением всего блока. Поэтому можно писать, например, так:
if a > (y = sin b; sqrt (y*z)) then print c

Управляющая конструкция case
case [ <case_expr> ] of ( <cases> )
Выражение <case_expr> сравнивается с метками выражений <cases>:
<factor>: <expr>
default: <expr>

Пример:
new_width =case obj.width of
 (
 2: copy $Box01
 3: instance $Box01
 default: reference $Box01
 )
Выражение после ключевого слова default будет выполнено, если не выполнятся остальные условия. Если default не задано и другие условия не выполнились, выражение case возвращает значение undefined

Если выражение <case_expr> не задано, метки должны быть булевыми (Boolean) величинами или выражениями, и первая метка, дающая истину, определяет выполняемое выражение <expr>.
Пример:
case of 
( 
 (a > b): print "a is big"
 (b < c): print "b is little"
 (c <= d* 3): ...
 default: ...
)