MSFD Операторы / математические расчеты
Вы можете использовать стандартные операторы в командах set (и возможно, в других местах, но я никогда не пробовалОт себя могу добавить, что, например, такая конструкция – if ( local_var1 / local_var2 > 10 ) – не проходит. Но подробной информации по данному вопросу у меня нет. Пробуйте сами. (Прим. Gwathlobal))
Сложение: +
Вычитание: -
Умножение: *
Деление:/
Синтаксис следующий:
Set result_var to (var_a + var_b)
Вместо переменных возможны конкретные числа.
Я предполагаю, что применяется стандартная последовательность операторов ( * и / вычисляются перед + и - ).
Так как это не проверено, я всегда использую скобки на всякий случай.
Можно использовать скобки в соответствии с обычными математическими правилами:
set ln to ( ln + ( k10 * math_ln10 ) + ( k2 * math_ln2 ) )
Предупреждение: На форумах существуют различные мнения по поводу использования нескольких операторов в одной строчке.
Некоторые люди говорят, что это вызывает много проблем.
Лично я использовал как минимум 4 оператора и переменных в одной строке.
Есть мнение, что очень большие сложения (например, более 20 переменных в одной строке) служат причиной вылета игры при загрузке.
Если это случилось, разделите вычисления на несколько строк.
Notes by DinkumThinkum:
Eleven variables in a single set statement will cause the following error when loading the game, followed by a crash to desktop:
"Need more room for zero pointers in Script::ReplaceGlobalsInData"
as soon as you click the button to acknowledge the error, CTD. (That script name wasn't any script of mine; it's something internal to the game.)
Six variables in a Set statement work fine. Don't know the maximum number, but it's obviously at least six and definitely less than eleven.
There isn't much in the way of dedicated mathematical functions in TES script. There is the 'Random' function and Tribunal added the 'GetSquareRoot' function (see below). If you need more complex functions, I suggest downloading Soralis' Math Mod (available from Planet Elder Scrolls). It's a collection of scripts that allow you to do complex calculations.
Here is a short excerpt from the readme to give you an idea:
Вот небольшая выдержка из Ридми, чтобы вы поняли, что это такое:
"Этот мод дает возможность использовать различные математические функции в скриптах Морровинда.
Вот скрипты, которые были добавлены:
|
Имя
|
Проверка/Сделано
|
Ввод
|
Вывод
|
Точность
|
|
MathScripts
|
N/A
|
N/A
|
N/A
|
N/A
|
|
MathConstants
|
N/A
|
N/A
|
N/A
|
N/A
|
|
SquareRoot
|
1
|
math_sqrt
|
math_result, math_imag
|
7
|
|
SineScript
|
2
|
math_angle
|
math_sin, math_cos, math_tan
|
7
|
|
ArcsineScript
|
3
|
math_arc
|
math_sin, math_cos
|
6-7
|
|
NaturalLog
|
4
|
math_log
|
math_result, math_imag
|
4-5
|
|
LogScript
|
5
|
math_log, math_base
|
math_result, math_imag
|
3-4
|
|
intPower
|
6
|
math_value, math_power
|
math_result
|
7
|
|
intRoot
|
7
|
math_value, math_root
|
math_result, math_imag
|
6-7
|
|
Modulus
|
8
|
math_value, math_mod
|
math_result
|
6-7
|
|
Antiln
|
9
|
math_log
|
math_result
|
4-5
|
|
Antilog
|
10
|
math_log, math_base
|
math_result
|
2-3
|
|
AbsoluteValue
|
11*
|
math_abs
|
math_abs
|
7
|
|
PowerScript
|
12
|
math_value, math_power
|
math_result, math_imag
|
2-3
|
К сожалению, многие из этих функций довольно медленные и не годятся для вычислений в реальном времени.
Для синуса и косинуса посмотрите скрипт JDGBOLT'а в разделе Советов и Трюков.
Немногое можно сказать о математических функциях в скриптах.
Есть функция Random (возвращает случайное значение) и Трибунал добавил функцию GetSquareRoot.
Если вам нужны более сложные функции, можно скачать Soralis' Math Mod (с Morrowind Summit). *т.е. теперь оно только в архивах вэб на ММХ.
В нем есть коллекция скриптов, которая позволяет совершать сложные расчеты.